From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 3/3] drm/i915/gem: Extract transient execbuf flags from i915_vma Date: Wed, 6 Nov 2019 15:48:10 +0000 Message-ID: <20191106154810.5843-3-chris@chris-wilson.co.uk> References: <20191106154810.5843-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id A925F6EDB2 for ; Wed, 6 Nov 2019 15:48:32 +0000 (UTC) In-Reply-To: <20191106154810.5843-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Rm9yIG91ciBjb252ZW5pZW5jZSwgYW5kIHRvIGF2b2lkIGZyZXF1ZW50IGFsbG9jYXRpb25zLCB3 ZSBwbGFjZWQgc29tZQpsaXN0cyB3ZSB1c2UgZm9yIGV4ZWNidWYgaW5zaWRlIHRoZSBjb21tb24g aTkxNV92bWEgc3RydWN0LiBBcyB3ZSBsb29rCnRvIHBhcmFsbGVsaXNlIGV4ZWNidWYsIHN1Y2gg ZmllbGRzIGd1YXJkZWQgYnkgdGhlIHN0cnVjdF9tdXRleCBCS0wgbXVzdApiZSBwdWxsZWQgdW5k ZXIgbG9jYWwgY29udHJvbC4gSW5zdGVhZCBvZiB1c2luZyB0aGUgaTkxNV92bWEgYXMgb3VyCnBy aW1hcnkgbWVhbnMgb2YgdHJhY2tpbmcgdGhlIHVzZXIncyBsaXN0IG9mIG9iamVjdHMgYW5kIHRo ZWlyIHZpcnR1YWwKbWFwcGluZ3MsIHdlIHVzZSBhIGxvY2FsIGViX3ZtYSB3aXRoIHRoZSBzYW1l IGxpc3RzIGFzIGJlZm9yZSAoanVzdCBub3cKbG9jYWwgbm90IGdsb2JhbCkuCgpTaWduZWQtb2Zm LWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IE1hYXJ0ZW4g TGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQogLi4uL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jICAgIHwgMjcxICsrKysrKysrKy0t LS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaCAgICAgICAgICAgICAgIHwg IDExIC0KIDIgZmlsZXMgY2hhbmdlZCwgMTMwIGluc2VydGlvbnMoKyksIDE1MiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1 ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwpp bmRleCBlNGY1YzI2OTE1MGEuLjhlYjljNGUxNzUxNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jCkBAIC0yNyw2ICsyNywxOSBAQAogI2luY2x1 ZGUgImk5MTVfZ2VtX2lvY3Rscy5oIgogI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKIAorc3RydWN0 IGViX3ZtYSB7CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CisJdW5zaWduZWQgaW50IGZsYWdzOwor CisJLyoqIFRoaXMgdm1hJ3MgcGxhY2UgaW4gdGhlIGV4ZWNidWYgcmVzZXJ2YXRpb24gbGlzdCAq LworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpleGVjOworCXN0cnVjdCBsaXN0 X2hlYWQgYmluZF9saW5rOworCXN0cnVjdCBsaXN0X2hlYWQgcmVsb2NfbGluazsKKworCXN0cnVj dCBobGlzdF9ub2RlIG5vZGU7CisJdTMyIGhhbmRsZTsKK307CisKIGVudW0gewogCUZPUkNFX0NQ VV9SRUxPQyA9IDEsCiAJRk9SQ0VfR1RUX1JFTE9DLApAQCAtMjE5LDE1ICsyMzIsMTQgQEAgc3Ry dWN0IGk5MTVfZXhlY2J1ZmZlciB7CiAJc3RydWN0IGRybV9maWxlICpmaWxlOyAvKiogcGVyLWZp bGUgbG9va3VwIHRhYmxlcyBhbmQgbGltaXRzICovCiAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVj YnVmZmVyMiAqYXJnczsgLyoqIGlvY3RsIHBhcmFtZXRlcnMgKi8KIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2V4ZWNfb2JqZWN0MiAqZXhlYzsgLyoqIGlvY3RsIGV4ZWNvYmpbXSAqLwotCXN0cnVjdCBp OTE1X3ZtYSAqKnZtYTsKLQl1bnNpZ25lZCBpbnQgKmZsYWdzOworCXN0cnVjdCBlYl92bWEgKnZt YTsKIAogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsgLyoqIGVuZ2luZSB0byBxdWV1 ZSB0aGUgcmVxdWVzdCB0byAqLwogCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjb250ZXh0OyAvKiBs b2dpY2FsIHN0YXRlIGZvciB0aGUgcmVxdWVzdCAqLwogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpnZW1fY29udGV4dDsgLyoqIGNhbGxlcidzIGNvbnRleHQgKi8KIAogCXN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJlcXVlc3Q7IC8qKiBvdXIgcmVxdWVzdCB0byBidWlsZCAqLwotCXN0cnVjdCBpOTE1 X3ZtYSAqYmF0Y2g7IC8qKiBpZGVudGl0eSBvZiB0aGUgYmF0Y2ggb2JqL3ZtYSAqLworCXN0cnVj dCBlYl92bWEgKmJhdGNoOyAvKiogaWRlbnRpdHkgb2YgdGhlIGJhdGNoIG9iai92bWEgKi8KIAog CS8qKiBhY3R1YWwgc2l6ZSBvZiBleGVjb2JqW10gYXMgd2UgbWF5IGV4dGVuZCBpdCBmb3IgdGhl IGNtZHBhcnNlciAqLwogCXVuc2lnbmVkIGludCBidWZmZXJfY291bnQ7CkBAIC0yNzUsOCArMjg3 LDYgQEAgc3RydWN0IGk5MTVfZXhlY2J1ZmZlciB7CiAJc3RydWN0IGhsaXN0X2hlYWQgKmJ1Y2tl dHM7IC8qKiBodCBmb3IgcmVsb2NhdGlvbiBoYW5kbGVzICovCiB9OwogCi0jZGVmaW5lIGV4ZWNf ZW50cnkoRUIsIFZNQSkgKCYoRUIpLT5leGVjWyhWTUEpLT5leGVjX2ZsYWdzIC0gKEVCKS0+Zmxh Z3NdKQotCiAvKgogICogVXNlZCB0byBjb252ZXJ0IGFueSBhZGRyZXNzIHRvIGNhbm9uaWNhbCBm b3JtLgogICogU3RhcnRpbmcgZnJvbSBnZW44LCBzb21lIGNvbW1hbmRzIChlLmcuIFNUQVRFX0JB U0VfQUREUkVTUywKQEAgLTM4MCw5ICszOTAsOSBAQCBlYl92bWFfbWlzcGxhY2VkKGNvbnN0IHN0 cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICplbnRyeSwKIHN0YXRpYyBpbmxpbmUgYm9v bAogZWJfcGluX3ZtYShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKIAkgICBjb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqZW50cnksCi0JICAgc3RydWN0IGk5MTVfdm1h ICp2bWEpCisJICAgc3RydWN0IGViX3ZtYSAqZXYpCiB7Ci0JdW5zaWduZWQgaW50IGV4ZWNfZmxh Z3MgPSAqdm1hLT5leGVjX2ZsYWdzOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gZXYtPnZtYTsK IAl1NjQgcGluX2ZsYWdzOwogCiAJaWYgKHZtYS0+bm9kZS5zaXplKQpAQCAtMzkxLDI0ICs0MDEs MjQgQEAgZWJfcGluX3ZtYShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKIAkJcGluX2ZsYWdz ID0gZW50cnktPm9mZnNldCAmIFBJTl9PRkZTRVRfTUFTSzsKIAogCXBpbl9mbGFncyB8PSBQSU5f VVNFUiB8IFBJTl9OT0VWSUNUIHwgUElOX09GRlNFVF9GSVhFRDsKLQlpZiAodW5saWtlbHkoZXhl Y19mbGFncyAmIEVYRUNfT0JKRUNUX05FRURTX0dUVCkpCisJaWYgKHVubGlrZWx5KGV2LT5mbGFn cyAmIEVYRUNfT0JKRUNUX05FRURTX0dUVCkpCiAJCXBpbl9mbGFncyB8PSBQSU5fR0xPQkFMOwog CiAJaWYgKHVubGlrZWx5KGk5MTVfdm1hX3Bpbih2bWEsIDAsIDAsIHBpbl9mbGFncykpKQogCQly ZXR1cm4gZmFsc2U7CiAKLQlpZiAodW5saWtlbHkoZXhlY19mbGFncyAmIEVYRUNfT0JKRUNUX05F RURTX0ZFTkNFKSkgeworCWlmICh1bmxpa2VseShldi0+ZmxhZ3MgJiBFWEVDX09CSkVDVF9ORUVE U19GRU5DRSkpIHsKIAkJaWYgKHVubGlrZWx5KGk5MTVfdm1hX3Bpbl9mZW5jZSh2bWEpKSkgewog CQkJaTkxNV92bWFfdW5waW4odm1hKTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCiAJCWlmICh2 bWEtPmZlbmNlKQotCQkJZXhlY19mbGFncyB8PSBfX0VYRUNfT0JKRUNUX0hBU19GRU5DRTsKKwkJ CWV2LT5mbGFncyB8PSBfX0VYRUNfT0JKRUNUX0hBU19GRU5DRTsKIAl9CiAKLQkqdm1hLT5leGVj X2ZsYWdzID0gZXhlY19mbGFncyB8IF9fRVhFQ19PQkpFQ1RfSEFTX1BJTjsKLQlyZXR1cm4gIWVi X3ZtYV9taXNwbGFjZWQoZW50cnksIHZtYSwgZXhlY19mbGFncyk7CisJZXYtPmZsYWdzIHw9IF9f RVhFQ19PQkpFQ1RfSEFTX1BJTjsKKwlyZXR1cm4gIWViX3ZtYV9taXNwbGFjZWQoZW50cnksIHZt YSwgZXYtPmZsYWdzKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIF9fZWJfdW5yZXNlcnZlX3Zt YShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgdW5zaWduZWQgaW50IGZsYWdzKQpAQCAtNDIyLDEzICs0 MzIsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fZWJfdW5yZXNlcnZlX3ZtYShzdHJ1Y3QgaTkx NV92bWEgKnZtYSwgdW5zaWduZWQgaW50IGZsYWdzKQogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQK LWViX3VucmVzZXJ2ZV92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsIHVuc2lnbmVkIGludCAqZmxh Z3MpCitlYl91bnJlc2VydmVfdm1hKHN0cnVjdCBlYl92bWEgKmV2KQogewotCWlmICghKCpmbGFn cyAmIF9fRVhFQ19PQkpFQ1RfSEFTX1BJTikpCisJaWYgKCEoZXYtPmZsYWdzICYgX19FWEVDX09C SkVDVF9IQVNfUElOKSkKIAkJcmV0dXJuOwogCi0JX19lYl91bnJlc2VydmVfdm1hKHZtYSwgKmZs YWdzKTsKLQkqZmxhZ3MgJj0gfl9fRVhFQ19PQkpFQ1RfUkVTRVJWRUQ7CisJX19lYl91bnJlc2Vy dmVfdm1hKGV2LT52bWEsIGV2LT5mbGFncyk7CisJZXYtPmZsYWdzICY9IH5fX0VYRUNfT0JKRUNU X1JFU0VSVkVEOwogfQogCiBzdGF0aWMgaW50CkBAIC00NTgsMTIgKzQ2OCw2IEBAIGViX3ZhbGlk YXRlX3ZtYShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKIAkJZW50cnktPnBhZF90b19zaXpl ID0gMDsKIAl9CiAKLQlpZiAodW5saWtlbHkodm1hLT5leGVjX2ZsYWdzKSkgewotCQlEUk1fREVC VUcoIk9iamVjdCBbaGFuZGxlICVkLCBpbmRleCAlZF0gYXBwZWFycyBtb3JlIHRoYW4gb25jZSBp biBvYmplY3QgbGlzdFxuIiwKLQkJCSAgZW50cnktPmhhbmRsZSwgKGludCkoZW50cnkgLSBlYi0+ ZXhlYykpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KIAkvKgogCSAqIEZyb20gZHJtX21tIHBl cnNwZWN0aXZlIGFkZHJlc3Mgc3BhY2UgaXMgY29udGludW91cywKIAkgKiBzbyBmcm9tIHRoaXMg cG9pbnQgd2UncmUgYWx3YXlzIHVzaW5nIG5vbi1jYW5vbmljYWwKQEAgLTQ5Miw2ICs0OTYsNyBA QCBlYl9hZGRfdm1hKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAogCSAgIHN0cnVjdCBpOTE1 X3ZtYSAqdm1hKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICplbnRyeSA9 ICZlYi0+ZXhlY1tpXTsKKwlzdHJ1Y3QgZWJfdm1hICpldiA9ICZlYi0+dm1hW2ldOwogCWludCBl cnI7CiAKIAlHRU1fQlVHX09OKGk5MTVfdm1hX2lzX2Nsb3NlZCh2bWEpKTsKQEAgLTUwMiwyNSAr NTA3LDE5IEBAIGViX2FkZF92bWEoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCiAJCQlyZXR1 cm4gZXJyOwogCX0KIAorCWV2LT52bWEgPSB2bWE7CisJZXYtPmV4ZWMgPSBlbnRyeTsKKwlldi0+ ZmxhZ3MgPSBlbnRyeS0+ZmxhZ3M7CisKIAlpZiAoZWItPmx1dF9zaXplID4gMCkgewotCQl2bWEt PmV4ZWNfaGFuZGxlID0gZW50cnktPmhhbmRsZTsKLQkJaGxpc3RfYWRkX2hlYWQoJnZtYS0+ZXhl Y19ub2RlLAorCQlldi0+aGFuZGxlID0gZW50cnktPmhhbmRsZTsKKwkJaGxpc3RfYWRkX2hlYWQo JmV2LT5ub2RlLAogCQkJICAgICAgICZlYi0+YnVja2V0c1toYXNoXzMyKGVudHJ5LT5oYW5kbGUs CiAJCQkJCQkgICAgZWItPmx1dF9zaXplKV0pOwogCX0KIAogCWlmIChlbnRyeS0+cmVsb2NhdGlv bl9jb3VudCkKLQkJbGlzdF9hZGRfdGFpbCgmdm1hLT5yZWxvY19saW5rLCAmZWItPnJlbG9jcyk7 Ci0KLQkvKgotCSAqIFN0YXNoIGEgcG9pbnRlciBmcm9tIHRoZSB2bWEgdG8gZXhlY29iaiwgc28g d2UgY2FuIHF1ZXJ5IGl0cyBmbGFncywKLQkgKiBzaXplLCBhbGlnbm1lbnQgZXRjIGFzIHByb3Zp ZGVkIGJ5IHRoZSB1c2VyLiBBbHNvIHdlIHN0YXNoIGEgcG9pbnRlcgotCSAqIHRvIHRoZSB2bWEg aW5zaWRlIHRoZSBleGVjb2JqIHNvIHRoYXQgd2UgY2FuIHVzZSBhIGRpcmVjdCBsb29rdXAKLQkg KiB0byBmaW5kIHRoZSByaWdodCB0YXJnZXQgVk1BIHdoZW4gZG9pbmcgcmVsb2NhdGlvbnMuCi0J ICovCi0JZWItPnZtYVtpXSA9IHZtYTsKLQllYi0+ZmxhZ3NbaV0gPSBlbnRyeS0+ZmxhZ3M7Ci0J dm1hLT5leGVjX2ZsYWdzID0gJmViLT5mbGFnc1tpXTsKKwkJbGlzdF9hZGRfdGFpbCgmZXYtPnJl bG9jX2xpbmssICZlYi0+cmVsb2NzKTsKIAogCS8qCiAJICogU05BIGlzIGRvaW5nIGZhbmN5IHRy aWNrcyB3aXRoIGNvbXByZXNzaW5nIGJhdGNoIGJ1ZmZlcnMsIHdoaWNoIGxlYWRzCkBAIC01MzMs MjggKzUzMiwyNiBAQCBlYl9hZGRfdm1hKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAogCSAq LwogCWlmIChpID09IGJhdGNoX2lkeCkgewogCQlpZiAoZW50cnktPnJlbG9jYXRpb25fY291bnQg JiYKLQkJICAgICEoZWItPmZsYWdzW2ldICYgRVhFQ19PQkpFQ1RfUElOTkVEKSkKLQkJCWViLT5m bGFnc1tpXSB8PSBfX0VYRUNfT0JKRUNUX05FRURTX0JJQVM7CisJCSAgICAhKGV2LT5mbGFncyAm IEVYRUNfT0JKRUNUX1BJTk5FRCkpCisJCQlldi0+ZmxhZ3MgfD0gX19FWEVDX09CSkVDVF9ORUVE U19CSUFTOwogCQlpZiAoZWItPnJlbG9jX2NhY2hlLmhhc19mZW5jZSkKLQkJCWViLT5mbGFnc1tp XSB8PSBFWEVDX09CSkVDVF9ORUVEU19GRU5DRTsKKwkJCWV2LT5mbGFncyB8PSBFWEVDX09CSkVD VF9ORUVEU19GRU5DRTsKIAotCQllYi0+YmF0Y2ggPSB2bWE7CisJCWViLT5iYXRjaCA9IGV2Owog CX0KIAogCWVyciA9IDA7Ci0JaWYgKGViX3Bpbl92bWEoZWIsIGVudHJ5LCB2bWEpKSB7CisJaWYg KGViX3Bpbl92bWEoZWIsIGVudHJ5LCBldikpIHsKIAkJaWYgKGVudHJ5LT5vZmZzZXQgIT0gdm1h LT5ub2RlLnN0YXJ0KSB7CiAJCQllbnRyeS0+b2Zmc2V0ID0gdm1hLT5ub2RlLnN0YXJ0IHwgVVBE QVRFOwogCQkJZWItPmFyZ3MtPmZsYWdzIHw9IF9fRVhFQ19IQVNfUkVMT0M7CiAJCX0KIAl9IGVs c2UgewotCQllYl91bnJlc2VydmVfdm1hKHZtYSwgdm1hLT5leGVjX2ZsYWdzKTsKKwkJZWJfdW5y ZXNlcnZlX3ZtYShldik7CiAKLQkJbGlzdF9hZGRfdGFpbCgmdm1hLT5leGVjX2xpbmssICZlYi0+ dW5ib3VuZCk7CisJCWxpc3RfYWRkX3RhaWwoJmV2LT5iaW5kX2xpbmssICZlYi0+dW5ib3VuZCk7 CiAJCWlmIChkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkpCiAJCQllcnIgPSBpOTE1 X3ZtYV91bmJpbmQodm1hKTsKLQkJaWYgKHVubGlrZWx5KGVycikpCi0JCQl2bWEtPmV4ZWNfZmxh Z3MgPSBOVUxMOwogCX0KIAlyZXR1cm4gZXJyOwogfQpAQCAtNTc2LDExICs1NzMsMTEgQEAgc3Rh dGljIGlubGluZSBpbnQgdXNlX2NwdV9yZWxvYyhjb25zdCBzdHJ1Y3QgcmVsb2NfY2FjaGUgKmNh Y2hlLAogCQlvYmotPmNhY2hlX2xldmVsICE9IEk5MTVfQ0FDSEVfTk9ORSk7CiB9CiAKLXN0YXRp YyBpbnQgZWJfcmVzZXJ2ZV92bWEoY29uc3Qgc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCi0J CQkgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQorc3RhdGljIGludCBlYl9yZXNlcnZlX3ZtYShjb25z dCBzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwgc3RydWN0IGViX3ZtYSAqZXYpCiB7Ci0Jc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKmVudHJ5ID0gZXhlY19lbnRyeShlYiwgdm1h KTsKLQl1bnNpZ25lZCBpbnQgZXhlY19mbGFncyA9ICp2bWEtPmV4ZWNfZmxhZ3M7CisJc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKmVudHJ5ID0gZXYtPmV4ZWM7CisJdW5zaWduZWQg aW50IGV4ZWNfZmxhZ3MgPSBldi0+ZmxhZ3M7CisJc3RydWN0IGk5MTVfdm1hICp2bWEgPSBldi0+ dm1hOwogCXU2NCBwaW5fZmxhZ3M7CiAJaW50IGVycjsKIApAQCAtNjI3LDggKzYyNCw4IEBAIHN0 YXRpYyBpbnQgZWJfcmVzZXJ2ZV92bWEoY29uc3Qgc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIs CiAJCQlleGVjX2ZsYWdzIHw9IF9fRVhFQ19PQkpFQ1RfSEFTX0ZFTkNFOwogCX0KIAotCSp2bWEt PmV4ZWNfZmxhZ3MgPSBleGVjX2ZsYWdzIHwgX19FWEVDX09CSkVDVF9IQVNfUElOOwotCUdFTV9C VUdfT04oZWJfdm1hX21pc3BsYWNlZChlbnRyeSwgdm1hLCBleGVjX2ZsYWdzKSk7CisJZXYtPmZs YWdzID0gZXhlY19mbGFncyB8IF9fRVhFQ19PQkpFQ1RfSEFTX1BJTjsKKwlHRU1fQlVHX09OKGVi X3ZtYV9taXNwbGFjZWQoZW50cnksIHZtYSwgZXYtPmZsYWdzKSk7CiAKIAlyZXR1cm4gMDsKIH0K QEAgLTYzNyw3ICs2MzQsNyBAQCBzdGF0aWMgaW50IGViX3Jlc2VydmUoc3RydWN0IGk5MTVfZXhl Y2J1ZmZlciAqZWIpCiB7CiAJY29uc3QgdW5zaWduZWQgaW50IGNvdW50ID0gZWItPmJ1ZmZlcl9j b3VudDsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGxhc3Q7Ci0Jc3RydWN0IGk5MTVfdm1hICp2bWE7CisJ c3RydWN0IGViX3ZtYSAqZXY7CiAJdW5zaWduZWQgaW50IGksIHBhc3M7CiAJaW50IGVycjsKIApA QCAtNjU4LDggKzY1NSw4IEBAIHN0YXRpYyBpbnQgZWJfcmVzZXJ2ZShzdHJ1Y3QgaTkxNV9leGVj YnVmZmVyICplYikKIAlwYXNzID0gMDsKIAllcnIgPSAwOwogCWRvIHsKLQkJbGlzdF9mb3JfZWFj aF9lbnRyeSh2bWEsICZlYi0+dW5ib3VuZCwgZXhlY19saW5rKSB7Ci0JCQllcnIgPSBlYl9yZXNl cnZlX3ZtYShlYiwgdm1hKTsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShldiwgJmViLT51bmJvdW5k LCBiaW5kX2xpbmspIHsKKwkJCWVyciA9IGViX3Jlc2VydmVfdm1hKGViLCBldik7CiAJCQlpZiAo ZXJyKQogCQkJCWJyZWFrOwogCQl9CkBAIC02NzAsMjYgKzY2NywyNiBAQCBzdGF0aWMgaW50IGVi X3Jlc2VydmUoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCiAJCUlOSVRfTElTVF9IRUFEKCZl Yi0+dW5ib3VuZCk7CiAJCUlOSVRfTElTVF9IRUFEKCZsYXN0KTsKIAkJZm9yIChpID0gMDsgaSA8 IGNvdW50OyBpKyspIHsKLQkJCXVuc2lnbmVkIGludCBmbGFncyA9IGViLT5mbGFnc1tpXTsKLQkJ CXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gZWItPnZtYVtpXTsKKwkJCXN0cnVjdCBlYl92bWEgKmV2 ID0gJmViLT52bWFbaV07CisJCQl1bnNpZ25lZCBpbnQgZmxhZ3MgPSBldi0+ZmxhZ3M7CiAKIAkJ CWlmIChmbGFncyAmIEVYRUNfT0JKRUNUX1BJTk5FRCAmJgogCQkJICAgIGZsYWdzICYgX19FWEVD X09CSkVDVF9IQVNfUElOKQogCQkJCWNvbnRpbnVlOwogCi0JCQllYl91bnJlc2VydmVfdm1hKHZt YSwgJmViLT5mbGFnc1tpXSk7CisJCQllYl91bnJlc2VydmVfdm1hKGV2KTsKIAogCQkJaWYgKGZs YWdzICYgRVhFQ19PQkpFQ1RfUElOTkVEKQogCQkJCS8qIFBpbm5lZCBtdXN0IGhhdmUgdGhlaXIg c2xvdCAqLwotCQkJCWxpc3RfYWRkKCZ2bWEtPmV4ZWNfbGluaywgJmViLT51bmJvdW5kKTsKKwkJ CQlsaXN0X2FkZCgmZXYtPmJpbmRfbGluaywgJmViLT51bmJvdW5kKTsKIAkJCWVsc2UgaWYgKGZs YWdzICYgX19FWEVDX09CSkVDVF9ORUVEU19NQVApCiAJCQkJLyogTWFwIHJlcXVpcmUgdGhlIGxv d2VzdCAyNTZNaUIgKGFwZXJ0dXJlKSAqLwotCQkJCWxpc3RfYWRkX3RhaWwoJnZtYS0+ZXhlY19s aW5rLCAmZWItPnVuYm91bmQpOworCQkJCWxpc3RfYWRkX3RhaWwoJmV2LT5iaW5kX2xpbmssICZl Yi0+dW5ib3VuZCk7CiAJCQllbHNlIGlmICghKGZsYWdzICYgRVhFQ19PQkpFQ1RfU1VQUE9SVFNf NDhCX0FERFJFU1MpKQogCQkJCS8qIFByaW9yaXRpc2UgNEdpQiByZWdpb24gZm9yIHJlc3RyaWN0 ZWQgYm8gKi8KLQkJCQlsaXN0X2FkZCgmdm1hLT5leGVjX2xpbmssICZsYXN0KTsKKwkJCQlsaXN0 X2FkZCgmZXYtPmJpbmRfbGluaywgJmxhc3QpOwogCQkJZWxzZQotCQkJCWxpc3RfYWRkX3RhaWwo JnZtYS0+ZXhlY19saW5rLCAmbGFzdCk7CisJCQkJbGlzdF9hZGRfdGFpbCgmZXYtPmJpbmRfbGlu aywgJmxhc3QpOwogCQl9CiAJCWxpc3Rfc3BsaWNlX3RhaWwoJmxhc3QsICZlYi0+dW5ib3VuZCk7 CiAKQEAgLTgwOCwxMCArODA1LDggQEAgc3RhdGljIGludCBlYl9sb29rdXBfdm1hcyhzdHJ1Y3Qg aTkxNV9leGVjYnVmZmVyICplYikKIAkJaWYgKHVubGlrZWx5KGVycikpCiAJCQlnb3RvIGVycl92 bWE7CiAKLQkJR0VNX0JVR19PTih2bWEgIT0gZWItPnZtYVtpXSk7Ci0JCUdFTV9CVUdfT04odm1h LT5leGVjX2ZsYWdzICE9ICZlYi0+ZmxhZ3NbaV0pOwogCQlHRU1fQlVHX09OKGRybV9tbV9ub2Rl X2FsbG9jYXRlZCgmdm1hLT5ub2RlKSAmJgotCQkJICAgZWJfdm1hX21pc3BsYWNlZCgmZWItPmV4 ZWNbaV0sIHZtYSwgZWItPmZsYWdzW2ldKSk7CisJCQkgICBlYl92bWFfbWlzcGxhY2VkKCZlYi0+ ZXhlY1tpXSwgdm1hLCBlYi0+dm1hW2ldLmZsYWdzKSk7CiAJfQogCiAJbXV0ZXhfdW5sb2NrKCZl Yi0+Z2VtX2NvbnRleHQtPm11dGV4KTsKQEAgLTgyMiwyNyArODE3LDI3IEBAIHN0YXRpYyBpbnQg ZWJfbG9va3VwX3ZtYXMoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCiBlcnJfb2JqOgogCWk5 MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKIGVycl92bWE6Ci0JZWItPnZtYVtpXSA9IE5VTEw7CisJ ZWItPnZtYVtpXS52bWEgPSBOVUxMOwogZXJyX2N0eDoKIAltdXRleF91bmxvY2soJmViLT5nZW1f Y29udGV4dC0+bXV0ZXgpOwogCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaTkxNV92 bWEgKgorc3RhdGljIHN0cnVjdCBlYl92bWEgKgogZWJfZ2V0X3ZtYShjb25zdCBzdHJ1Y3QgaTkx NV9leGVjYnVmZmVyICplYiwgdW5zaWduZWQgbG9uZyBoYW5kbGUpCiB7CiAJaWYgKGViLT5sdXRf c2l6ZSA8IDApIHsKIAkJaWYgKGhhbmRsZSA+PSAtZWItPmx1dF9zaXplKQogCQkJcmV0dXJuIE5V TEw7Ci0JCXJldHVybiBlYi0+dm1hW2hhbmRsZV07CisJCXJldHVybiAmZWItPnZtYVtoYW5kbGVd OwogCX0gZWxzZSB7CiAJCXN0cnVjdCBobGlzdF9oZWFkICpoZWFkOwotCQlzdHJ1Y3QgaTkxNV92 bWEgKnZtYTsKKwkJc3RydWN0IGViX3ZtYSAqZXY7CiAKIAkJaGVhZCA9ICZlYi0+YnVja2V0c1to YXNoXzMyKGhhbmRsZSwgZWItPmx1dF9zaXplKV07Ci0JCWhsaXN0X2Zvcl9lYWNoX2VudHJ5KHZt YSwgaGVhZCwgZXhlY19ub2RlKSB7Ci0JCQlpZiAodm1hLT5leGVjX2hhbmRsZSA9PSBoYW5kbGUp Ci0JCQkJcmV0dXJuIHZtYTsKKwkJaGxpc3RfZm9yX2VhY2hfZW50cnkoZXYsIGhlYWQsIG5vZGUp IHsKKwkJCWlmIChldi0+aGFuZGxlID09IGhhbmRsZSkKKwkJCQlyZXR1cm4gZXY7CiAJCX0KIAkJ cmV0dXJuIE5VTEw7CiAJfQpAQCAtODU0LDIwICs4NDksMTggQEAgc3RhdGljIHZvaWQgZWJfcmVs ZWFzZV92bWFzKGNvbnN0IHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQogCXVuc2lnbmVkIGlu dCBpOwogCiAJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLQkJc3RydWN0IGk5MTVfdm1h ICp2bWEgPSBlYi0+dm1hW2ldOwotCQl1bnNpZ25lZCBpbnQgZmxhZ3MgPSBlYi0+ZmxhZ3NbaV07 CisJCXN0cnVjdCBlYl92bWEgKmV2ID0gJmViLT52bWFbaV07CisJCXN0cnVjdCBpOTE1X3ZtYSAq dm1hID0gZXYtPnZtYTsKIAogCQlpZiAoIXZtYSkKIAkJCWJyZWFrOwogCi0JCUdFTV9CVUdfT04o dm1hLT5leGVjX2ZsYWdzICE9ICZlYi0+ZmxhZ3NbaV0pOwotCQl2bWEtPmV4ZWNfZmxhZ3MgPSBO VUxMOwotCQllYi0+dm1hW2ldID0gTlVMTDsKKwkJZWItPnZtYVtpXS52bWEgPSBOVUxMOwogCi0J CWlmIChmbGFncyAmIF9fRVhFQ19PQkpFQ1RfSEFTX1BJTikKLQkJCV9fZWJfdW5yZXNlcnZlX3Zt YSh2bWEsIGZsYWdzKTsKKwkJaWYgKGV2LT5mbGFncyAmIF9fRVhFQ19PQkpFQ1RfSEFTX1BJTikK KwkJCV9fZWJfdW5yZXNlcnZlX3ZtYSh2bWEsIGV2LT5mbGFncyk7CiAKLQkJaWYgKGZsYWdzICYg X19FWEVDX09CSkVDVF9IQVNfUkVGKQorCQlpZiAoZXYtPmZsYWdzICYgX19FWEVDX09CSkVDVF9I QVNfUkVGKQogCQkJaTkxNV92bWFfcHV0KHZtYSk7CiAJfQogfQpAQCAtMTM3NywxMCArMTM3MCwx MCBAQCByZWxvY2F0ZV9lbnRyeShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAogc3RhdGljIHU2NAog ZWJfcmVsb2NhdGVfZW50cnkoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCi0JCSAgc3RydWN0 IGk5MTVfdm1hICp2bWEsCisJCSAgc3RydWN0IGViX3ZtYSAqZXYsCiAJCSAgY29uc3Qgc3RydWN0 IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5ICpyZWxvYykKIHsKLQlzdHJ1Y3QgaTkxNV92 bWEgKnRhcmdldDsKKwlzdHJ1Y3QgZWJfdm1hICp0YXJnZXQ7CiAJaW50IGVycjsKIAogCS8qIHdl J3ZlIGFscmVhZHkgaG9sZCBhIHJlZmVyZW5jZSB0byBhbGwgdmFsaWQgb2JqZWN0cyAqLwpAQCAt MTQxMiw3ICsxNDA1LDcgQEAgZWJfcmVsb2NhdGVfZW50cnkoc3RydWN0IGk5MTVfZXhlY2J1ZmZl ciAqZWIsCiAJfQogCiAJaWYgKHJlbG9jLT53cml0ZV9kb21haW4pIHsKLQkJKnRhcmdldC0+ZXhl Y19mbGFncyB8PSBFWEVDX09CSkVDVF9XUklURTsKKwkJdGFyZ2V0LT5mbGFncyB8PSBFWEVDX09C SkVDVF9XUklURTsKIAogCQkvKgogCQkgKiBTYW5keWJyaWRnZSBQUEdUVCBlcnJhdGE6IFdlIG5l ZWQgYSBnbG9iYWwgZ3R0IG1hcHBpbmcKQEAgLTE0MjIsNyArMTQxNSw4IEBAIGViX3JlbG9jYXRl X2VudHJ5KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAogCQkgKi8KIAkJaWYgKHJlbG9jLT53 cml0ZV9kb21haW4gPT0gSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OICYmCiAJCSAgICBJU19H RU4oZWItPmk5MTUsIDYpKSB7Ci0JCQllcnIgPSBpOTE1X3ZtYV9iaW5kKHRhcmdldCwgdGFyZ2V0 LT5vYmotPmNhY2hlX2xldmVsLAorCQkJZXJyID0gaTkxNV92bWFfYmluZCh0YXJnZXQtPnZtYSwK KwkJCQkJICAgIHRhcmdldC0+dm1hLT5vYmotPmNhY2hlX2xldmVsLAogCQkJCQkgICAgUElOX0dM T0JBTCwgTlVMTCk7CiAJCQlpZiAoV0FSTl9PTkNFKGVyciwKIAkJCQkgICAgICAiVW5leHBlY3Rl ZCBmYWlsdXJlIHRvIGJpbmQgdGFyZ2V0IFZNQSEiKSkKQEAgLTE0MzUsMTcgKzE0MjksMTcgQEAg ZWJfcmVsb2NhdGVfZW50cnkoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCiAJICogbW9yZSB3 b3JrIG5lZWRzIHRvIGJlIGRvbmUuCiAJICovCiAJaWYgKCFEQkdfRk9SQ0VfUkVMT0MgJiYKLQkg ICAgZ2VuOF9jYW5vbmljYWxfYWRkcih0YXJnZXQtPm5vZGUuc3RhcnQpID09IHJlbG9jLT5wcmVz dW1lZF9vZmZzZXQpCisJICAgIGdlbjhfY2Fub25pY2FsX2FkZHIodGFyZ2V0LT52bWEtPm5vZGUu c3RhcnQpID09IHJlbG9jLT5wcmVzdW1lZF9vZmZzZXQpCiAJCXJldHVybiAwOwogCiAJLyogQ2hl Y2sgdGhhdCB0aGUgcmVsb2NhdGlvbiBhZGRyZXNzIGlzIHZhbGlkLi4uICovCiAJaWYgKHVubGlr ZWx5KHJlbG9jLT5vZmZzZXQgPgotCQkgICAgIHZtYS0+c2l6ZSAtIChlYi0+cmVsb2NfY2FjaGUu dXNlXzY0Yml0X3JlbG9jID8gOCA6IDQpKSkgeworCQkgICAgIGV2LT52bWEtPnNpemUgLSAoZWIt PnJlbG9jX2NhY2hlLnVzZV82NGJpdF9yZWxvYyA/IDggOiA0KSkpIHsKIAkJRFJNX0RFQlVHKCJS ZWxvY2F0aW9uIGJleW9uZCBvYmplY3QgYm91bmRzOiAiCiAJCQkgICJ0YXJnZXQgJWQgb2Zmc2V0 ICVkIHNpemUgJWQuXG4iLAogCQkJICByZWxvYy0+dGFyZ2V0X2hhbmRsZSwKIAkJCSAgKGludCly ZWxvYy0+b2Zmc2V0LAotCQkJICAoaW50KXZtYS0+c2l6ZSk7CisJCQkgIChpbnQpZXYtPnZtYS0+ c2l6ZSk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAlpZiAodW5saWtlbHkocmVsb2MtPm9mZnNl dCAmIDMpKSB7CkBAIC0xNDY0LDE4ICsxNDU4LDE4IEBAIGViX3JlbG9jYXRlX2VudHJ5KHN0cnVj dCBpOTE1X2V4ZWNidWZmZXIgKmViLAogCSAqIGRvIHJlbG9jYXRpb25zIHdlIGFyZSBhbHJlYWR5 IHN0YWxsaW5nLCBkaXNhYmxlIHRoZSB1c2VyJ3Mgb3B0CiAJICogb3V0IG9mIG91ciBzeW5jaHJv bmlzYXRpb24uCiAJICovCi0JKnZtYS0+ZXhlY19mbGFncyAmPSB+RVhFQ19PQkpFQ1RfQVNZTkM7 CisJZXYtPmZsYWdzICY9IH5FWEVDX09CSkVDVF9BU1lOQzsKIAogCS8qIGFuZCB1cGRhdGUgdGhl IHVzZXIncyByZWxvY2F0aW9uIGVudHJ5ICovCi0JcmV0dXJuIHJlbG9jYXRlX2VudHJ5KHZtYSwg cmVsb2MsIGViLCB0YXJnZXQpOworCXJldHVybiByZWxvY2F0ZV9lbnRyeShldi0+dm1hLCByZWxv YywgZWIsIHRhcmdldC0+dm1hKTsKIH0KIAotc3RhdGljIGludCBlYl9yZWxvY2F0ZV92bWEoc3Ry dWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQorc3RhdGljIGlu dCBlYl9yZWxvY2F0ZV92bWEoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIHN0cnVjdCBlYl92 bWEgKmV2KQogewogI2RlZmluZSBOX1JFTE9DKHgpICgoeCkgLyBzaXplb2Yoc3RydWN0IGRybV9p OTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5KSkKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRp b25fZW50cnkgc3RhY2tbTl9SRUxPQyg1MTIpXTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9j YXRpb25fZW50cnkgX191c2VyICp1cmVsb2NzOwotCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY19vYmplY3QyICplbnRyeSA9IGV4ZWNfZW50cnkoZWIsIHZtYSk7CisJY29uc3Qgc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKmVudHJ5ID0gZXYtPmV4ZWM7CiAJdW5zaWduZWQg aW50IHJlbWFpbjsKIAogCXVyZWxvY3MgPSB1NjRfdG9fdXNlcl9wdHIoZW50cnktPnJlbG9jc19w dHIpOwpAQCAtMTUxNSw3ICsxNTA5LDcgQEAgc3RhdGljIGludCBlYl9yZWxvY2F0ZV92bWEoc3Ry dWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCiAJCXJlbWFp biAtPSBjb3VudDsKIAkJZG8gewotCQkJdTY0IG9mZnNldCA9IGViX3JlbG9jYXRlX2VudHJ5KGVi LCB2bWEsIHIpOworCQkJdTY0IG9mZnNldCA9IGViX3JlbG9jYXRlX2VudHJ5KGViLCBldiwgcik7 CiAKIAkJCWlmIChsaWtlbHkob2Zmc2V0ID09IDApKSB7CiAJCQl9IGVsc2UgaWYgKChzNjQpb2Zm c2V0IDwgMCkgewpAQCAtMTU1OCwxNiArMTU1MiwxNiBAQCBzdGF0aWMgaW50IGViX3JlbG9jYXRl X3ZtYShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwgc3RydWN0IGk5MTVfdm1hICp2bWEpCiB9 CiAKIHN0YXRpYyBpbnQKLWViX3JlbG9jYXRlX3ZtYV9zbG93KHN0cnVjdCBpOTE1X2V4ZWNidWZm ZXIgKmViLCBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKK2ViX3JlbG9jYXRlX3ZtYV9zbG93KHN0cnVj dCBpOTE1X2V4ZWNidWZmZXIgKmViLCBzdHJ1Y3QgZWJfdm1hICpldikKIHsKLQljb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqZW50cnkgPSBleGVjX2VudHJ5KGViLCB2bWEp OworCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICplbnRyeSA9IGV2LT5l eGVjOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2NzID0KIAkJ dTY0X3RvX3B0cih0eXBlb2YoKnJlbG9jcyksIGVudHJ5LT5yZWxvY3NfcHRyKTsKIAl1bnNpZ25l ZCBpbnQgaTsKIAlpbnQgZXJyOwogCiAJZm9yIChpID0gMDsgaSA8IGVudHJ5LT5yZWxvY2F0aW9u X2NvdW50OyBpKyspIHsKLQkJdTY0IG9mZnNldCA9IGViX3JlbG9jYXRlX2VudHJ5KGViLCB2bWEs ICZyZWxvY3NbaV0pOworCQl1NjQgb2Zmc2V0ID0gZWJfcmVsb2NhdGVfZW50cnkoZWIsIGV2LCAm cmVsb2NzW2ldKTsKIAogCQlpZiAoKHM2NClvZmZzZXQgPCAwKSB7CiAJCQllcnIgPSAoaW50KW9m ZnNldDsKQEAgLTE3MTEsNyArMTcwNSw3IEBAIHN0YXRpYyBub2lubGluZSBpbnQgZWJfcmVsb2Nh dGVfc2xvdyhzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYikKIHsKIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gJmViLT5pOTE1LT5kcm07CiAJYm9vbCBoYXZlX2NvcHkgPSBmYWxzZTsKLQlzdHJ1 Y3QgaTkxNV92bWEgKnZtYTsKKwlzdHJ1Y3QgZWJfdm1hICpldjsKIAlpbnQgZXJyID0gMDsKIAog cmVwZWF0OgpAQCAtMTc2NywxNSArMTc2MSwxNSBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGViX3Jl bG9jYXRlX3Nsb3coc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCiAKIAlHRU1fQlVHX09OKCFl Yi0+YmF0Y2gpOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZlYi0+cmVsb2NzLCByZWxv Y19saW5rKSB7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShldiwgJmViLT5yZWxvY3MsIHJlbG9jX2xp bmspIHsKIAkJaWYgKCFoYXZlX2NvcHkpIHsKIAkJCXBhZ2VmYXVsdF9kaXNhYmxlKCk7Ci0JCQll cnIgPSBlYl9yZWxvY2F0ZV92bWEoZWIsIHZtYSk7CisJCQllcnIgPSBlYl9yZWxvY2F0ZV92bWEo ZWIsIGV2KTsKIAkJCXBhZ2VmYXVsdF9lbmFibGUoKTsKIAkJCWlmIChlcnIpCiAJCQkJZ290byBy ZXBlYXQ7CiAJCX0gZWxzZSB7Ci0JCQllcnIgPSBlYl9yZWxvY2F0ZV92bWFfc2xvdyhlYiwgdm1h KTsKKwkJCWVyciA9IGViX3JlbG9jYXRlX3ZtYV9zbG93KGViLCBldik7CiAJCQlpZiAoZXJyKQog CQkJCWdvdG8gZXJyOwogCQl9CkBAIC0xODIwLDEwICsxODE0LDEwIEBAIHN0YXRpYyBpbnQgZWJf cmVsb2NhdGUoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCiAKIAkvKiBUaGUgb2JqZWN0cyBh cmUgaW4gdGhlaXIgZmluYWwgbG9jYXRpb25zLCBhcHBseSB0aGUgcmVsb2NhdGlvbnMuICovCiAJ aWYgKGViLT5hcmdzLT5mbGFncyAmIF9fRVhFQ19IQVNfUkVMT0MpIHsKLQkJc3RydWN0IGk5MTVf dm1hICp2bWE7CisJCXN0cnVjdCBlYl92bWEgKmV2OwogCi0JCWxpc3RfZm9yX2VhY2hfZW50cnko dm1hLCAmZWItPnJlbG9jcywgcmVsb2NfbGluaykgewotCQkJaWYgKGViX3JlbG9jYXRlX3ZtYShl Yiwgdm1hKSkKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShldiwgJmViLT5yZWxvY3MsIHJlbG9jX2xp bmspIHsKKwkJCWlmIChlYl9yZWxvY2F0ZV92bWEoZWIsIGV2KSkKIAkJCQlnb3RvIHNsb3c7CiAJ CX0KIAl9CkBAIC0xODQ0LDM5ICsxODM4LDM0IEBAIHN0YXRpYyBpbnQgZWJfbW92ZV90b19ncHUo c3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCiAJd3dfYWNxdWlyZV9pbml0KCZhY3F1aXJlLCAm cmVzZXJ2YXRpb25fd3dfY2xhc3MpOwogCiAJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsK LQkJc3RydWN0IGk5MTVfdm1hICp2bWEgPSBlYi0+dm1hW2ldOworCQlzdHJ1Y3QgZWJfdm1hICpl diA9ICZlYi0+dm1hW2ldOworCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9IGV2LT52bWE7CiAKIAkJ ZXJyID0gd3dfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZ2bWEtPnJlc3YtPmxvY2ssICZhY3F1 aXJlKTsKLQkJaWYgKCFlcnIpCi0JCQljb250aW51ZTsKLQotCQlHRU1fQlVHX09OKGVyciA9PSAt RUFMUkVBRFkpOyAvKiBObyBkdXBsaWNhdGUgdm1hICovCi0KIAkJaWYgKGVyciA9PSAtRURFQURM SykgewogCQkJR0VNX0JVR19PTihpID09IDApOwogCQkJZG8gewogCQkJCWludCBqID0gaSAtIDE7 CiAKLQkJCQl3d19tdXRleF91bmxvY2soJmViLT52bWFbal0tPnJlc3YtPmxvY2spOworCQkJCXd3 X211dGV4X3VubG9jaygmZWItPnZtYVtqXS52bWEtPnJlc3YtPmxvY2spOwogCi0JCQkJc3dhcChl Yi0+ZmxhZ3NbaV0sIGViLT5mbGFnc1tqXSk7CiAJCQkJc3dhcChlYi0+dm1hW2ldLCAgZWItPnZt YVtqXSk7Ci0JCQkJZWItPnZtYVtpXS0+ZXhlY19mbGFncyA9ICZlYi0+ZmxhZ3NbaV07CiAJCQl9 IHdoaWxlICgtLWkpOwotCQkJR0VNX0JVR19PTih2bWEgIT0gZWItPnZtYVswXSk7Ci0JCQl2bWEt PmV4ZWNfZmxhZ3MgPSAmZWItPmZsYWdzWzBdOwogCiAJCQllcnIgPSB3d19tdXRleF9sb2NrX3Ns b3dfaW50ZXJydXB0aWJsZSgmdm1hLT5yZXN2LT5sb2NrLAogCQkJCQkJCSAgICAgICAmYWNxdWly ZSk7CiAJCX0KKwkJaWYgKGVyciA9PSAtRUFMUkVBRFkpCisJCQllcnIgPSAwOwogCQlpZiAoZXJy KQogCQkJYnJlYWs7CiAJfQogCXd3X2FjcXVpcmVfZG9uZSgmYWNxdWlyZSk7CiAKIAl3aGlsZSAo aS0tKSB7Ci0JCXVuc2lnbmVkIGludCBmbGFncyA9IGViLT5mbGFnc1tpXTsKLQkJc3RydWN0IGk5 MTVfdm1hICp2bWEgPSBlYi0+dm1hW2ldOworCQlzdHJ1Y3QgZWJfdm1hICpldiA9ICZlYi0+dm1h W2ldOworCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9IGV2LT52bWE7CisJCXVuc2lnbmVkIGludCBm bGFncyA9IGV2LT5mbGFnczsKIAkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHZt YS0+b2JqOwogCiAJCWFzc2VydF92bWFfaGVsZCh2bWEpOwpAQCAtMTkyMCwxMCArMTkwOSwxMCBA QCBzdGF0aWMgaW50IGViX21vdmVfdG9fZ3B1KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQog CQlpOTE1X3ZtYV91bmxvY2sodm1hKTsKIAogCQlfX2ViX3VucmVzZXJ2ZV92bWEodm1hLCBmbGFn cyk7Ci0JCXZtYS0+ZXhlY19mbGFncyA9IE5VTEw7Ci0KIAkJaWYgKHVubGlrZWx5KGZsYWdzICYg X19FWEVDX09CSkVDVF9IQVNfUkVGKSkKIAkJCWk5MTVfdm1hX3B1dCh2bWEpOworCisJCWV2LT52 bWEgPSBOVUxMOwogCX0KIAl3d19hY3F1aXJlX2ZpbmkoJmFjcXVpcmUpOwogCkBAIC0yMDAxLDcg KzE5OTAsNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfdm1hICplYl9wYXJzZShzdHJ1Y3QgaTkxNV9l eGVjYnVmZmVyICplYiwgYm9vbCBpc19tYXN0ZXIpCiAJCXJldHVybiBFUlJfQ0FTVChwb29sKTsK IAogCWVyciA9IGludGVsX2VuZ2luZV9jbWRfcGFyc2VyKGViLT5lbmdpbmUsCi0JCQkJICAgICAg ZWItPmJhdGNoLT5vYmosCisJCQkJICAgICAgZWItPmJhdGNoLT52bWEtPm9iaiwKIAkJCQkgICAg ICBwb29sLT5vYmosCiAJCQkJICAgICAgZWItPmJhdGNoX3N0YXJ0X29mZnNldCwKIAkJCQkgICAg ICBlYi0+YmF0Y2hfbGVuLApAQCAtMjAxOCwxMCArMjAwNyw5IEBAIHN0YXRpYyBzdHJ1Y3QgaTkx NV92bWEgKmViX3BhcnNlKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLCBib29sIGlzX21hc3Rl cikKIAlpZiAoSVNfRVJSKHZtYSkpCiAJCWdvdG8gZXJyOwogCi0JZWItPnZtYVtlYi0+YnVmZmVy X2NvdW50XSA9IGk5MTVfdm1hX2dldCh2bWEpOwotCWViLT5mbGFnc1tlYi0+YnVmZmVyX2NvdW50 XSA9CisJZWItPnZtYVtlYi0+YnVmZmVyX2NvdW50XS52bWEgPSBpOTE1X3ZtYV9nZXQodm1hKTsK KwllYi0+dm1hW2ViLT5idWZmZXJfY291bnRdLmZsYWdzID0KIAkJX19FWEVDX09CSkVDVF9IQVNf UElOIHwgX19FWEVDX09CSkVDVF9IQVNfUkVGOwotCXZtYS0+ZXhlY19mbGFncyA9ICZlYi0+Zmxh Z3NbZWItPmJ1ZmZlcl9jb3VudF07CiAJZWItPmJ1ZmZlcl9jb3VudCsrOwogCiAJdm1hLT5wcml2 YXRlID0gcG9vbDsKQEAgLTIwNDQsNyArMjAzMiw3IEBAIGFkZF90b19jbGllbnQoc3RydWN0IGk5 MTVfcmVxdWVzdCAqcnEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIAlzcGluX3VubG9jaygmZmls ZV9wcml2LT5tbS5sb2NrKTsKIH0KIAotc3RhdGljIGludCBlYl9zdWJtaXQoc3RydWN0IGk5MTVf ZXhlY2J1ZmZlciAqZWIpCitzdGF0aWMgaW50IGViX3N1Ym1pdChzdHJ1Y3QgaTkxNV9leGVjYnVm ZmVyICplYiwgc3RydWN0IGk5MTVfdm1hICpiYXRjaCkKIHsKIAlpbnQgZXJyOwogCkBAIC0yMDcx LDcgKzIwNTksNyBAQCBzdGF0aWMgaW50IGViX3N1Ym1pdChzdHJ1Y3QgaTkxNV9leGVjYnVmZmVy ICplYikKIAl9CiAKIAllcnIgPSBlYi0+ZW5naW5lLT5lbWl0X2JiX3N0YXJ0KGViLT5yZXF1ZXN0 LAotCQkJCQllYi0+YmF0Y2gtPm5vZGUuc3RhcnQgKworCQkJCQliYXRjaC0+bm9kZS5zdGFydCAr CiAJCQkJCWViLT5iYXRjaF9zdGFydF9vZmZzZXQsCiAJCQkJCWViLT5iYXRjaF9sZW4sCiAJCQkJ CWViLT5iYXRjaF9mbGFncyk7CkBAIC0yNDM0LDYgKzI0MjIsNyBAQCBpOTE1X2dlbV9kb19leGVj YnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJc3RydWN0IGRtYV9mZW5jZSAqaW5fZmVu Y2UgPSBOVUxMOwogCXN0cnVjdCBkbWFfZmVuY2UgKmV4ZWNfZmVuY2UgPSBOVUxMOwogCXN0cnVj dCBzeW5jX2ZpbGUgKm91dF9mZW5jZSA9IE5VTEw7CisJc3RydWN0IGk5MTVfdm1hICpiYXRjaDsK IAlpbnQgb3V0X2ZlbmNlX2ZkID0gLTE7CiAJaW50IGVycjsKIApAQCAtMjQ0OCw5ICsyNDM3LDgg QEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlhcmdz LT5mbGFncyB8PSBfX0VYRUNfSEFTX1JFTE9DOwogCiAJZWIuZXhlYyA9IGV4ZWM7Ci0JZWIudm1h ID0gKHN0cnVjdCBpOTE1X3ZtYSAqKikoZXhlYyArIGFyZ3MtPmJ1ZmZlcl9jb3VudCArIDEpOwot CWViLnZtYVswXSA9IE5VTEw7Ci0JZWIuZmxhZ3MgPSAodW5zaWduZWQgaW50ICopKGViLnZtYSAr IGFyZ3MtPmJ1ZmZlcl9jb3VudCArIDEpOworCWViLnZtYSA9IChzdHJ1Y3QgZWJfdm1hICopKGV4 ZWMgKyBhcmdzLT5idWZmZXJfY291bnQgKyAxKTsKKwllYi52bWFbMF0udm1hID0gTlVMTDsKIAog CWViLmludmFsaWRfZmxhZ3MgPSBfX0VYRUNfT0JKRUNUX1VOS05PV05fRkxBR1M7CiAJcmVsb2Nf Y2FjaGVfaW5pdCgmZWIucmVsb2NfY2FjaGUsIGViLmk5MTUpOwpAQCAtMjUyNywxMyArMjUxNSwx NiBAQCBpOTE1X2dlbV9kb19leGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWdv dG8gZXJyX3ZtYTsKIAl9CiAKLQlpZiAodW5saWtlbHkoKmViLmJhdGNoLT5leGVjX2ZsYWdzICYg RVhFQ19PQkpFQ1RfV1JJVEUpKSB7CisJaWYgKHVubGlrZWx5KGViLmJhdGNoLT5mbGFncyAmIEVY RUNfT0JKRUNUX1dSSVRFKSkgewogCQlEUk1fREVCVUcoIkF0dGVtcHRpbmcgdG8gdXNlIHNlbGYt bW9kaWZ5aW5nIGJhdGNoIGJ1ZmZlclxuIik7CiAJCWVyciA9IC1FSU5WQUw7CiAJCWdvdG8gZXJy X3ZtYTsKIAl9Ci0JaWYgKGViLmJhdGNoX3N0YXJ0X29mZnNldCA+IGViLmJhdGNoLT5zaXplIHx8 Ci0JICAgIGViLmJhdGNoX2xlbiA+IGViLmJhdGNoLT5zaXplIC0gZWIuYmF0Y2hfc3RhcnRfb2Zm c2V0KSB7CisKKwliYXRjaCA9IGViLmJhdGNoLT52bWE7CisJaWYgKHJhbmdlX292ZXJmbG93c190 KHU2NCwKKwkJCSAgICAgIGViLmJhdGNoX3N0YXJ0X29mZnNldCwgZWIuYmF0Y2hfbGVuLAorCQkJ ICAgICAgYmF0Y2gtPnNpemUpKSB7CiAJCURSTV9ERUJVRygiQXR0ZW1wdGluZyB0byB1c2Ugb3V0 LW9mLWJvdW5kcyBiYXRjaFxuIik7CiAJCWVyciA9IC1FSU5WQUw7CiAJCWdvdG8gZXJyX3ZtYTsK QEAgLTI1NjAsMTIgKzI1NTEsMTIgQEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCQkJICovCiAJCQllYi5iYXRjaF9mbGFncyB8PSBJOTE1X0RJU1BBVENI X1NFQ1VSRTsKIAkJCWViLmJhdGNoX3N0YXJ0X29mZnNldCA9IDA7Ci0JCQllYi5iYXRjaCA9IHZt YTsKKwkJCWJhdGNoID0gdm1hOwogCQl9CiAJfQogCiAJaWYgKGViLmJhdGNoX2xlbiA9PSAwKQot CQllYi5iYXRjaF9sZW4gPSBlYi5iYXRjaC0+c2l6ZSAtIGViLmJhdGNoX3N0YXJ0X29mZnNldDsK KwkJZWIuYmF0Y2hfbGVuID0gYmF0Y2gtPnNpemUgLSBlYi5iYXRjaF9zdGFydF9vZmZzZXQ7CiAK IAkvKgogCSAqIHNuYi9pdmIvdmx2IGNvbmZsYXRlIHRoZSAiYmF0Y2ggaW4gcHBndHQiIGJpdCB3 aXRoIHRoZSAibm9uLXNlY3VyZQpAQCAtMjU4NCwxMyArMjU3NSwxMyBAQCBpOTE1X2dlbV9kb19l eGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCSAqICAgZml0dGluZyBkdWUgdG8g ZnJhZ21lbnRhdGlvbi4KIAkJICogU28gdGhpcyBpcyBhY3R1YWxseSBzYWZlLgogCQkgKi8KLQkJ dm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKGViLmJhdGNoLT5vYmosIE5VTEwsIDAsIDAs IDApOworCQl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oYmF0Y2gtPm9iaiwgTlVMTCwg MCwgMCwgMCk7CiAJCWlmIChJU19FUlIodm1hKSkgewogCQkJZXJyID0gUFRSX0VSUih2bWEpOwog CQkJZ290byBlcnJfdm1hOwogCQl9CiAKLQkJZWIuYmF0Y2ggPSB2bWE7CisJCWJhdGNoID0gdm1h OwogCX0KIAogCS8qIEFsbCBHUFUgcmVsb2NhdGlvbiBiYXRjaGVzIG11c3QgYmUgc3VibWl0dGVk IHByaW9yIHRvIHRoZSB1c2VyIHJxICovCkBAIC0yNjM3LDEyICsyNjI4LDEyIEBAIGk5MTVfZ2Vt X2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkgKiBpbmFjdGl2ZV9saXN0 IGFuZCBsb3NlIGl0cyBhY3RpdmUgcmVmZXJlbmNlLiBIZW5jZSB3ZSBkbyBub3QgbmVlZAogCSAq IHRvIGV4cGxpY2l0bHkgaG9sZCBhbm90aGVyIHJlZmVyZW5jZSBoZXJlLgogCSAqLwotCWViLnJl cXVlc3QtPmJhdGNoID0gZWIuYmF0Y2g7Ci0JaWYgKGViLmJhdGNoLT5wcml2YXRlKQotCQlpbnRl bF9lbmdpbmVfcG9vbF9tYXJrX2FjdGl2ZShlYi5iYXRjaC0+cHJpdmF0ZSwgZWIucmVxdWVzdCk7 CisJZWIucmVxdWVzdC0+YmF0Y2ggPSBiYXRjaDsKKwlpZiAoYmF0Y2gtPnByaXZhdGUpCisJCWlu dGVsX2VuZ2luZV9wb29sX21hcmtfYWN0aXZlKGJhdGNoLT5wcml2YXRlLCBlYi5yZXF1ZXN0KTsK IAogCXRyYWNlX2k5MTVfcmVxdWVzdF9xdWV1ZShlYi5yZXF1ZXN0LCBlYi5iYXRjaF9mbGFncyk7 Ci0JZXJyID0gZWJfc3VibWl0KCZlYik7CisJZXJyID0gZWJfc3VibWl0KCZlYiwgYmF0Y2gpOwog ZXJyX3JlcXVlc3Q6CiAJYWRkX3RvX2NsaWVudChlYi5yZXF1ZXN0LCBmaWxlKTsKIAlpOTE1X3Jl cXVlc3RfYWRkKGViLnJlcXVlc3QpOwpAQCAtMjY2Myw5ICsyNjU0LDkgQEAgaTkxNV9nZW1fZG9f ZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCiBlcnJfYmF0Y2hfdW5waW46CiAJ aWYgKGViLmJhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUpCi0JCWk5MTVfdm1hX3Vu cGluKGViLmJhdGNoKTsKLQlpZiAoZWIuYmF0Y2gtPnByaXZhdGUpCi0JCWludGVsX2VuZ2luZV9w b29sX3B1dChlYi5iYXRjaC0+cHJpdmF0ZSk7CisJCWk5MTVfdm1hX3VucGluKGJhdGNoKTsKKwlp ZiAoYmF0Y2gtPnByaXZhdGUpCisJCWludGVsX2VuZ2luZV9wb29sX3B1dChiYXRjaC0+cHJpdmF0 ZSk7CiBlcnJfdm1hOgogCWlmIChlYi5leGVjKQogCQllYl9yZWxlYXNlX3ZtYXMoJmViKTsKQEAg LTI2ODgsOSArMjY3OSw3IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAogc3RhdGljIHNpemVfdCBlYl9lbGVtZW50X3NpemUodm9pZCkKIHsKLQlyZXR1 cm4gKHNpemVvZihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MikgKwotCQlzaXplb2Yo c3RydWN0IGk5MTVfdm1hICopICsKLQkJc2l6ZW9mKHVuc2lnbmVkIGludCkpOworCXJldHVybiBz aXplb2Yoc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIpICsgc2l6ZW9mKHN0cnVjdCBl Yl92bWEpOwogfQogCiBzdGF0aWMgYm9vbCBjaGVja19idWZmZXJfY291bnQoc2l6ZV90IGNvdW50 KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKaW5kZXggNDY1OTMyODEzYmM1Li43MTQwMjA1NmQ4NDYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaApAQCAtMTQ3LDIxICsxNDcsMTAgQEAgc3RydWN0IGk5 MTVfdm1hIHsKIAlzdHJ1Y3QgcmJfbm9kZSBvYmpfbm9kZTsKIAlzdHJ1Y3QgaGxpc3Rfbm9kZSBv YmpfaGFzaDsKIAotCS8qKiBUaGlzIHZtYSdzIHBsYWNlIGluIHRoZSBleGVjYnVmIHJlc2VydmF0 aW9uIGxpc3QgKi8KLQlzdHJ1Y3QgbGlzdF9oZWFkIGV4ZWNfbGluazsKLQlzdHJ1Y3QgbGlzdF9o ZWFkIHJlbG9jX2xpbms7Ci0KIAkvKiogVGhpcyB2bWEncyBwbGFjZSBpbiB0aGUgZXZpY3Rpb24g bGlzdCAqLwogCXN0cnVjdCBsaXN0X2hlYWQgZXZpY3RfbGluazsKIAogCXN0cnVjdCBsaXN0X2hl YWQgY2xvc2VkX2xpbms7Ci0KLQkvKioKLQkgKiBVc2VkIGZvciBwZXJmb3JtaW5nIHJlbG9jYXRp b25zIGR1cmluZyBleGVjYnVmZmVyIGluc2VydGlvbi4KLQkgKi8KLQl1bnNpZ25lZCBpbnQgKmV4 ZWNfZmxhZ3M7Ci0Jc3RydWN0IGhsaXN0X25vZGUgZXhlY19ub2RlOwotCXUzMiBleGVjX2hhbmRs ZTsKIH07CiAKIHN0cnVjdCBpOTE1X3ZtYSAqCi0tIAoyLjI0LjAKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6ABCEC5DF63 for ; Wed, 6 Nov 2019 15:48:37 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 49F602084D for ; Wed, 6 Nov 2019 15:48:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 49F602084D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=chris-wilson.co.uk Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0DCE16EDB3; Wed, 6 Nov 2019 15:48:35 +0000 (UTC) Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id A925F6EDB2 for ; Wed, 6 Nov 2019 15:48:32 +0000 (UTC) X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=78.156.65.138; Received: from haswell.alporthouse.com (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP id 19104019-1500050 for multiple; Wed, 06 Nov 2019 15:48:13 +0000 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Wed, 6 Nov 2019 15:48:10 +0000 Message-Id: <20191106154810.5843-3-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191106154810.5843-1-chris@chris-wilson.co.uk> References: <20191106154810.5843-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 3/3] drm/i915/gem: Extract transient execbuf flags from i915_vma X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191106154810.ZcE4bc2XqpsLv53mNtCgC453oHfKI6CxRwwMsN1VWqc@z> Rm9yIG91ciBjb252ZW5pZW5jZSwgYW5kIHRvIGF2b2lkIGZyZXF1ZW50IGFsbG9jYXRpb25zLCB3 ZSBwbGFjZWQgc29tZQpsaXN0cyB3ZSB1c2UgZm9yIGV4ZWNidWYgaW5zaWRlIHRoZSBjb21tb24g aTkxNV92bWEgc3RydWN0LiBBcyB3ZSBsb29rCnRvIHBhcmFsbGVsaXNlIGV4ZWNidWYsIHN1Y2gg ZmllbGRzIGd1YXJkZWQgYnkgdGhlIHN0cnVjdF9tdXRleCBCS0wgbXVzdApiZSBwdWxsZWQgdW5k ZXIgbG9jYWwgY29udHJvbC4gSW5zdGVhZCBvZiB1c2luZyB0aGUgaTkxNV92bWEgYXMgb3VyCnBy aW1hcnkgbWVhbnMgb2YgdHJhY2tpbmcgdGhlIHVzZXIncyBsaXN0IG9mIG9iamVjdHMgYW5kIHRo ZWlyIHZpcnR1YWwKbWFwcGluZ3MsIHdlIHVzZSBhIGxvY2FsIGViX3ZtYSB3aXRoIHRoZSBzYW1l IGxpc3RzIGFzIGJlZm9yZSAoanVzdCBub3cKbG9jYWwgbm90IGdsb2JhbCkuCgpTaWduZWQtb2Zm LWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IE1hYXJ0ZW4g TGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQogLi4uL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jICAgIHwgMjcxICsrKysrKysrKy0t LS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaCAgICAgICAgICAgICAgIHwg IDExIC0KIDIgZmlsZXMgY2hhbmdlZCwgMTMwIGluc2VydGlvbnMoKyksIDE1MiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1 ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwpp bmRleCBlNGY1YzI2OTE1MGEuLjhlYjljNGUxNzUxNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jCkBAIC0yNyw2ICsyNywxOSBAQAogI2luY2x1 ZGUgImk5MTVfZ2VtX2lvY3Rscy5oIgogI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKIAorc3RydWN0 IGViX3ZtYSB7CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CisJdW5zaWduZWQgaW50IGZsYWdzOwor CisJLyoqIFRoaXMgdm1hJ3MgcGxhY2UgaW4gdGhlIGV4ZWNidWYgcmVzZXJ2YXRpb24gbGlzdCAq LworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpleGVjOworCXN0cnVjdCBsaXN0 X2hlYWQgYmluZF9saW5rOworCXN0cnVjdCBsaXN0X2hlYWQgcmVsb2NfbGluazsKKworCXN0cnVj dCBobGlzdF9ub2RlIG5vZGU7CisJdTMyIGhhbmRsZTsKK307CisKIGVudW0gewogCUZPUkNFX0NQ VV9SRUxPQyA9IDEsCiAJRk9SQ0VfR1RUX1JFTE9DLApAQCAtMjE5LDE1ICsyMzIsMTQgQEAgc3Ry dWN0IGk5MTVfZXhlY2J1ZmZlciB7CiAJc3RydWN0IGRybV9maWxlICpmaWxlOyAvKiogcGVyLWZp bGUgbG9va3VwIHRhYmxlcyBhbmQgbGltaXRzICovCiAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVj YnVmZmVyMiAqYXJnczsgLyoqIGlvY3RsIHBhcmFtZXRlcnMgKi8KIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2V4ZWNfb2JqZWN0MiAqZXhlYzsgLyoqIGlvY3RsIGV4ZWNvYmpbXSAqLwotCXN0cnVjdCBp OTE1X3ZtYSAqKnZtYTsKLQl1bnNpZ25lZCBpbnQgKmZsYWdzOworCXN0cnVjdCBlYl92bWEgKnZt YTsKIAogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsgLyoqIGVuZ2luZSB0byBxdWV1 ZSB0aGUgcmVxdWVzdCB0byAqLwogCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjb250ZXh0OyAvKiBs b2dpY2FsIHN0YXRlIGZvciB0aGUgcmVxdWVzdCAqLwogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpnZW1fY29udGV4dDsgLyoqIGNhbGxlcidzIGNvbnRleHQgKi8KIAogCXN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJlcXVlc3Q7IC8qKiBvdXIgcmVxdWVzdCB0byBidWlsZCAqLwotCXN0cnVjdCBpOTE1 X3ZtYSAqYmF0Y2g7IC8qKiBpZGVudGl0eSBvZiB0aGUgYmF0Y2ggb2JqL3ZtYSAqLworCXN0cnVj dCBlYl92bWEgKmJhdGNoOyAvKiogaWRlbnRpdHkgb2YgdGhlIGJhdGNoIG9iai92bWEgKi8KIAog CS8qKiBhY3R1YWwgc2l6ZSBvZiBleGVjb2JqW10gYXMgd2UgbWF5IGV4dGVuZCBpdCBmb3IgdGhl IGNtZHBhcnNlciAqLwogCXVuc2lnbmVkIGludCBidWZmZXJfY291bnQ7CkBAIC0yNzUsOCArMjg3 LDYgQEAgc3RydWN0IGk5MTVfZXhlY2J1ZmZlciB7CiAJc3RydWN0IGhsaXN0X2hlYWQgKmJ1Y2tl dHM7IC8qKiBodCBmb3IgcmVsb2NhdGlvbiBoYW5kbGVzICovCiB9OwogCi0jZGVmaW5lIGV4ZWNf ZW50cnkoRUIsIFZNQSkgKCYoRUIpLT5leGVjWyhWTUEpLT5leGVjX2ZsYWdzIC0gKEVCKS0+Zmxh Z3NdKQotCiAvKgogICogVXNlZCB0byBjb252ZXJ0IGFueSBhZGRyZXNzIHRvIGNhbm9uaWNhbCBm b3JtLgogICogU3RhcnRpbmcgZnJvbSBnZW44LCBzb21lIGNvbW1hbmRzIChlLmcuIFNUQVRFX0JB U0VfQUREUkVTUywKQEAgLTM4MCw5ICszOTAsOSBAQCBlYl92bWFfbWlzcGxhY2VkKGNvbnN0IHN0 cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICplbnRyeSwKIHN0YXRpYyBpbmxpbmUgYm9v bAogZWJfcGluX3ZtYShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKIAkgICBjb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqZW50cnksCi0JICAgc3RydWN0IGk5MTVfdm1h ICp2bWEpCisJICAgc3RydWN0IGViX3ZtYSAqZXYpCiB7Ci0JdW5zaWduZWQgaW50IGV4ZWNfZmxh Z3MgPSAqdm1hLT5leGVjX2ZsYWdzOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gZXYtPnZtYTsK IAl1NjQgcGluX2ZsYWdzOwogCiAJaWYgKHZtYS0+bm9kZS5zaXplKQpAQCAtMzkxLDI0ICs0MDEs MjQgQEAgZWJfcGluX3ZtYShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKIAkJcGluX2ZsYWdz ID0gZW50cnktPm9mZnNldCAmIFBJTl9PRkZTRVRfTUFTSzsKIAogCXBpbl9mbGFncyB8PSBQSU5f VVNFUiB8IFBJTl9OT0VWSUNUIHwgUElOX09GRlNFVF9GSVhFRDsKLQlpZiAodW5saWtlbHkoZXhl Y19mbGFncyAmIEVYRUNfT0JKRUNUX05FRURTX0dUVCkpCisJaWYgKHVubGlrZWx5KGV2LT5mbGFn cyAmIEVYRUNfT0JKRUNUX05FRURTX0dUVCkpCiAJCXBpbl9mbGFncyB8PSBQSU5fR0xPQkFMOwog CiAJaWYgKHVubGlrZWx5KGk5MTVfdm1hX3Bpbih2bWEsIDAsIDAsIHBpbl9mbGFncykpKQogCQly ZXR1cm4gZmFsc2U7CiAKLQlpZiAodW5saWtlbHkoZXhlY19mbGFncyAmIEVYRUNfT0JKRUNUX05F RURTX0ZFTkNFKSkgeworCWlmICh1bmxpa2VseShldi0+ZmxhZ3MgJiBFWEVDX09CSkVDVF9ORUVE U19GRU5DRSkpIHsKIAkJaWYgKHVubGlrZWx5KGk5MTVfdm1hX3Bpbl9mZW5jZSh2bWEpKSkgewog CQkJaTkxNV92bWFfdW5waW4odm1hKTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCiAJCWlmICh2 bWEtPmZlbmNlKQotCQkJZXhlY19mbGFncyB8PSBfX0VYRUNfT0JKRUNUX0hBU19GRU5DRTsKKwkJ CWV2LT5mbGFncyB8PSBfX0VYRUNfT0JKRUNUX0hBU19GRU5DRTsKIAl9CiAKLQkqdm1hLT5leGVj X2ZsYWdzID0gZXhlY19mbGFncyB8IF9fRVhFQ19PQkpFQ1RfSEFTX1BJTjsKLQlyZXR1cm4gIWVi X3ZtYV9taXNwbGFjZWQoZW50cnksIHZtYSwgZXhlY19mbGFncyk7CisJZXYtPmZsYWdzIHw9IF9f RVhFQ19PQkpFQ1RfSEFTX1BJTjsKKwlyZXR1cm4gIWViX3ZtYV9taXNwbGFjZWQoZW50cnksIHZt YSwgZXYtPmZsYWdzKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIF9fZWJfdW5yZXNlcnZlX3Zt YShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgdW5zaWduZWQgaW50IGZsYWdzKQpAQCAtNDIyLDEzICs0 MzIsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fZWJfdW5yZXNlcnZlX3ZtYShzdHJ1Y3QgaTkx NV92bWEgKnZtYSwgdW5zaWduZWQgaW50IGZsYWdzKQogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQK LWViX3VucmVzZXJ2ZV92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsIHVuc2lnbmVkIGludCAqZmxh Z3MpCitlYl91bnJlc2VydmVfdm1hKHN0cnVjdCBlYl92bWEgKmV2KQogewotCWlmICghKCpmbGFn cyAmIF9fRVhFQ19PQkpFQ1RfSEFTX1BJTikpCisJaWYgKCEoZXYtPmZsYWdzICYgX19FWEVDX09C SkVDVF9IQVNfUElOKSkKIAkJcmV0dXJuOwogCi0JX19lYl91bnJlc2VydmVfdm1hKHZtYSwgKmZs YWdzKTsKLQkqZmxhZ3MgJj0gfl9fRVhFQ19PQkpFQ1RfUkVTRVJWRUQ7CisJX19lYl91bnJlc2Vy dmVfdm1hKGV2LT52bWEsIGV2LT5mbGFncyk7CisJZXYtPmZsYWdzICY9IH5fX0VYRUNfT0JKRUNU X1JFU0VSVkVEOwogfQogCiBzdGF0aWMgaW50CkBAIC00NTgsMTIgKzQ2OCw2IEBAIGViX3ZhbGlk YXRlX3ZtYShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKIAkJZW50cnktPnBhZF90b19zaXpl ID0gMDsKIAl9CiAKLQlpZiAodW5saWtlbHkodm1hLT5leGVjX2ZsYWdzKSkgewotCQlEUk1fREVC VUcoIk9iamVjdCBbaGFuZGxlICVkLCBpbmRleCAlZF0gYXBwZWFycyBtb3JlIHRoYW4gb25jZSBp biBvYmplY3QgbGlzdFxuIiwKLQkJCSAgZW50cnktPmhhbmRsZSwgKGludCkoZW50cnkgLSBlYi0+ ZXhlYykpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KIAkvKgogCSAqIEZyb20gZHJtX21tIHBl cnNwZWN0aXZlIGFkZHJlc3Mgc3BhY2UgaXMgY29udGludW91cywKIAkgKiBzbyBmcm9tIHRoaXMg cG9pbnQgd2UncmUgYWx3YXlzIHVzaW5nIG5vbi1jYW5vbmljYWwKQEAgLTQ5Miw2ICs0OTYsNyBA QCBlYl9hZGRfdm1hKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAogCSAgIHN0cnVjdCBpOTE1 X3ZtYSAqdm1hKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICplbnRyeSA9 ICZlYi0+ZXhlY1tpXTsKKwlzdHJ1Y3QgZWJfdm1hICpldiA9ICZlYi0+dm1hW2ldOwogCWludCBl cnI7CiAKIAlHRU1fQlVHX09OKGk5MTVfdm1hX2lzX2Nsb3NlZCh2bWEpKTsKQEAgLTUwMiwyNSAr NTA3LDE5IEBAIGViX2FkZF92bWEoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCiAJCQlyZXR1 cm4gZXJyOwogCX0KIAorCWV2LT52bWEgPSB2bWE7CisJZXYtPmV4ZWMgPSBlbnRyeTsKKwlldi0+ ZmxhZ3MgPSBlbnRyeS0+ZmxhZ3M7CisKIAlpZiAoZWItPmx1dF9zaXplID4gMCkgewotCQl2bWEt PmV4ZWNfaGFuZGxlID0gZW50cnktPmhhbmRsZTsKLQkJaGxpc3RfYWRkX2hlYWQoJnZtYS0+ZXhl Y19ub2RlLAorCQlldi0+aGFuZGxlID0gZW50cnktPmhhbmRsZTsKKwkJaGxpc3RfYWRkX2hlYWQo JmV2LT5ub2RlLAogCQkJICAgICAgICZlYi0+YnVja2V0c1toYXNoXzMyKGVudHJ5LT5oYW5kbGUs CiAJCQkJCQkgICAgZWItPmx1dF9zaXplKV0pOwogCX0KIAogCWlmIChlbnRyeS0+cmVsb2NhdGlv bl9jb3VudCkKLQkJbGlzdF9hZGRfdGFpbCgmdm1hLT5yZWxvY19saW5rLCAmZWItPnJlbG9jcyk7 Ci0KLQkvKgotCSAqIFN0YXNoIGEgcG9pbnRlciBmcm9tIHRoZSB2bWEgdG8gZXhlY29iaiwgc28g d2UgY2FuIHF1ZXJ5IGl0cyBmbGFncywKLQkgKiBzaXplLCBhbGlnbm1lbnQgZXRjIGFzIHByb3Zp ZGVkIGJ5IHRoZSB1c2VyLiBBbHNvIHdlIHN0YXNoIGEgcG9pbnRlcgotCSAqIHRvIHRoZSB2bWEg aW5zaWRlIHRoZSBleGVjb2JqIHNvIHRoYXQgd2UgY2FuIHVzZSBhIGRpcmVjdCBsb29rdXAKLQkg KiB0byBmaW5kIHRoZSByaWdodCB0YXJnZXQgVk1BIHdoZW4gZG9pbmcgcmVsb2NhdGlvbnMuCi0J ICovCi0JZWItPnZtYVtpXSA9IHZtYTsKLQllYi0+ZmxhZ3NbaV0gPSBlbnRyeS0+ZmxhZ3M7Ci0J dm1hLT5leGVjX2ZsYWdzID0gJmViLT5mbGFnc1tpXTsKKwkJbGlzdF9hZGRfdGFpbCgmZXYtPnJl bG9jX2xpbmssICZlYi0+cmVsb2NzKTsKIAogCS8qCiAJICogU05BIGlzIGRvaW5nIGZhbmN5IHRy aWNrcyB3aXRoIGNvbXByZXNzaW5nIGJhdGNoIGJ1ZmZlcnMsIHdoaWNoIGxlYWRzCkBAIC01MzMs MjggKzUzMiwyNiBAQCBlYl9hZGRfdm1hKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAogCSAq LwogCWlmIChpID09IGJhdGNoX2lkeCkgewogCQlpZiAoZW50cnktPnJlbG9jYXRpb25fY291bnQg JiYKLQkJICAgICEoZWItPmZsYWdzW2ldICYgRVhFQ19PQkpFQ1RfUElOTkVEKSkKLQkJCWViLT5m bGFnc1tpXSB8PSBfX0VYRUNfT0JKRUNUX05FRURTX0JJQVM7CisJCSAgICAhKGV2LT5mbGFncyAm IEVYRUNfT0JKRUNUX1BJTk5FRCkpCisJCQlldi0+ZmxhZ3MgfD0gX19FWEVDX09CSkVDVF9ORUVE U19CSUFTOwogCQlpZiAoZWItPnJlbG9jX2NhY2hlLmhhc19mZW5jZSkKLQkJCWViLT5mbGFnc1tp XSB8PSBFWEVDX09CSkVDVF9ORUVEU19GRU5DRTsKKwkJCWV2LT5mbGFncyB8PSBFWEVDX09CSkVD VF9ORUVEU19GRU5DRTsKIAotCQllYi0+YmF0Y2ggPSB2bWE7CisJCWViLT5iYXRjaCA9IGV2Owog CX0KIAogCWVyciA9IDA7Ci0JaWYgKGViX3Bpbl92bWEoZWIsIGVudHJ5LCB2bWEpKSB7CisJaWYg KGViX3Bpbl92bWEoZWIsIGVudHJ5LCBldikpIHsKIAkJaWYgKGVudHJ5LT5vZmZzZXQgIT0gdm1h LT5ub2RlLnN0YXJ0KSB7CiAJCQllbnRyeS0+b2Zmc2V0ID0gdm1hLT5ub2RlLnN0YXJ0IHwgVVBE QVRFOwogCQkJZWItPmFyZ3MtPmZsYWdzIHw9IF9fRVhFQ19IQVNfUkVMT0M7CiAJCX0KIAl9IGVs c2UgewotCQllYl91bnJlc2VydmVfdm1hKHZtYSwgdm1hLT5leGVjX2ZsYWdzKTsKKwkJZWJfdW5y ZXNlcnZlX3ZtYShldik7CiAKLQkJbGlzdF9hZGRfdGFpbCgmdm1hLT5leGVjX2xpbmssICZlYi0+ dW5ib3VuZCk7CisJCWxpc3RfYWRkX3RhaWwoJmV2LT5iaW5kX2xpbmssICZlYi0+dW5ib3VuZCk7 CiAJCWlmIChkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkpCiAJCQllcnIgPSBpOTE1 X3ZtYV91bmJpbmQodm1hKTsKLQkJaWYgKHVubGlrZWx5KGVycikpCi0JCQl2bWEtPmV4ZWNfZmxh Z3MgPSBOVUxMOwogCX0KIAlyZXR1cm4gZXJyOwogfQpAQCAtNTc2LDExICs1NzMsMTEgQEAgc3Rh dGljIGlubGluZSBpbnQgdXNlX2NwdV9yZWxvYyhjb25zdCBzdHJ1Y3QgcmVsb2NfY2FjaGUgKmNh Y2hlLAogCQlvYmotPmNhY2hlX2xldmVsICE9IEk5MTVfQ0FDSEVfTk9ORSk7CiB9CiAKLXN0YXRp YyBpbnQgZWJfcmVzZXJ2ZV92bWEoY29uc3Qgc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCi0J CQkgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQorc3RhdGljIGludCBlYl9yZXNlcnZlX3ZtYShjb25z dCBzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwgc3RydWN0IGViX3ZtYSAqZXYpCiB7Ci0Jc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKmVudHJ5ID0gZXhlY19lbnRyeShlYiwgdm1h KTsKLQl1bnNpZ25lZCBpbnQgZXhlY19mbGFncyA9ICp2bWEtPmV4ZWNfZmxhZ3M7CisJc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKmVudHJ5ID0gZXYtPmV4ZWM7CisJdW5zaWduZWQg aW50IGV4ZWNfZmxhZ3MgPSBldi0+ZmxhZ3M7CisJc3RydWN0IGk5MTVfdm1hICp2bWEgPSBldi0+ dm1hOwogCXU2NCBwaW5fZmxhZ3M7CiAJaW50IGVycjsKIApAQCAtNjI3LDggKzYyNCw4IEBAIHN0 YXRpYyBpbnQgZWJfcmVzZXJ2ZV92bWEoY29uc3Qgc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIs CiAJCQlleGVjX2ZsYWdzIHw9IF9fRVhFQ19PQkpFQ1RfSEFTX0ZFTkNFOwogCX0KIAotCSp2bWEt PmV4ZWNfZmxhZ3MgPSBleGVjX2ZsYWdzIHwgX19FWEVDX09CSkVDVF9IQVNfUElOOwotCUdFTV9C VUdfT04oZWJfdm1hX21pc3BsYWNlZChlbnRyeSwgdm1hLCBleGVjX2ZsYWdzKSk7CisJZXYtPmZs YWdzID0gZXhlY19mbGFncyB8IF9fRVhFQ19PQkpFQ1RfSEFTX1BJTjsKKwlHRU1fQlVHX09OKGVi X3ZtYV9taXNwbGFjZWQoZW50cnksIHZtYSwgZXYtPmZsYWdzKSk7CiAKIAlyZXR1cm4gMDsKIH0K QEAgLTYzNyw3ICs2MzQsNyBAQCBzdGF0aWMgaW50IGViX3Jlc2VydmUoc3RydWN0IGk5MTVfZXhl Y2J1ZmZlciAqZWIpCiB7CiAJY29uc3QgdW5zaWduZWQgaW50IGNvdW50ID0gZWItPmJ1ZmZlcl9j b3VudDsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGxhc3Q7Ci0Jc3RydWN0IGk5MTVfdm1hICp2bWE7CisJ c3RydWN0IGViX3ZtYSAqZXY7CiAJdW5zaWduZWQgaW50IGksIHBhc3M7CiAJaW50IGVycjsKIApA QCAtNjU4LDggKzY1NSw4IEBAIHN0YXRpYyBpbnQgZWJfcmVzZXJ2ZShzdHJ1Y3QgaTkxNV9leGVj YnVmZmVyICplYikKIAlwYXNzID0gMDsKIAllcnIgPSAwOwogCWRvIHsKLQkJbGlzdF9mb3JfZWFj aF9lbnRyeSh2bWEsICZlYi0+dW5ib3VuZCwgZXhlY19saW5rKSB7Ci0JCQllcnIgPSBlYl9yZXNl cnZlX3ZtYShlYiwgdm1hKTsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShldiwgJmViLT51bmJvdW5k LCBiaW5kX2xpbmspIHsKKwkJCWVyciA9IGViX3Jlc2VydmVfdm1hKGViLCBldik7CiAJCQlpZiAo ZXJyKQogCQkJCWJyZWFrOwogCQl9CkBAIC02NzAsMjYgKzY2NywyNiBAQCBzdGF0aWMgaW50IGVi X3Jlc2VydmUoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCiAJCUlOSVRfTElTVF9IRUFEKCZl Yi0+dW5ib3VuZCk7CiAJCUlOSVRfTElTVF9IRUFEKCZsYXN0KTsKIAkJZm9yIChpID0gMDsgaSA8 IGNvdW50OyBpKyspIHsKLQkJCXVuc2lnbmVkIGludCBmbGFncyA9IGViLT5mbGFnc1tpXTsKLQkJ CXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gZWItPnZtYVtpXTsKKwkJCXN0cnVjdCBlYl92bWEgKmV2 ID0gJmViLT52bWFbaV07CisJCQl1bnNpZ25lZCBpbnQgZmxhZ3MgPSBldi0+ZmxhZ3M7CiAKIAkJ CWlmIChmbGFncyAmIEVYRUNfT0JKRUNUX1BJTk5FRCAmJgogCQkJICAgIGZsYWdzICYgX19FWEVD X09CSkVDVF9IQVNfUElOKQogCQkJCWNvbnRpbnVlOwogCi0JCQllYl91bnJlc2VydmVfdm1hKHZt YSwgJmViLT5mbGFnc1tpXSk7CisJCQllYl91bnJlc2VydmVfdm1hKGV2KTsKIAogCQkJaWYgKGZs YWdzICYgRVhFQ19PQkpFQ1RfUElOTkVEKQogCQkJCS8qIFBpbm5lZCBtdXN0IGhhdmUgdGhlaXIg c2xvdCAqLwotCQkJCWxpc3RfYWRkKCZ2bWEtPmV4ZWNfbGluaywgJmViLT51bmJvdW5kKTsKKwkJ CQlsaXN0X2FkZCgmZXYtPmJpbmRfbGluaywgJmViLT51bmJvdW5kKTsKIAkJCWVsc2UgaWYgKGZs YWdzICYgX19FWEVDX09CSkVDVF9ORUVEU19NQVApCiAJCQkJLyogTWFwIHJlcXVpcmUgdGhlIGxv d2VzdCAyNTZNaUIgKGFwZXJ0dXJlKSAqLwotCQkJCWxpc3RfYWRkX3RhaWwoJnZtYS0+ZXhlY19s aW5rLCAmZWItPnVuYm91bmQpOworCQkJCWxpc3RfYWRkX3RhaWwoJmV2LT5iaW5kX2xpbmssICZl Yi0+dW5ib3VuZCk7CiAJCQllbHNlIGlmICghKGZsYWdzICYgRVhFQ19PQkpFQ1RfU1VQUE9SVFNf NDhCX0FERFJFU1MpKQogCQkJCS8qIFByaW9yaXRpc2UgNEdpQiByZWdpb24gZm9yIHJlc3RyaWN0 ZWQgYm8gKi8KLQkJCQlsaXN0X2FkZCgmdm1hLT5leGVjX2xpbmssICZsYXN0KTsKKwkJCQlsaXN0 X2FkZCgmZXYtPmJpbmRfbGluaywgJmxhc3QpOwogCQkJZWxzZQotCQkJCWxpc3RfYWRkX3RhaWwo JnZtYS0+ZXhlY19saW5rLCAmbGFzdCk7CisJCQkJbGlzdF9hZGRfdGFpbCgmZXYtPmJpbmRfbGlu aywgJmxhc3QpOwogCQl9CiAJCWxpc3Rfc3BsaWNlX3RhaWwoJmxhc3QsICZlYi0+dW5ib3VuZCk7 CiAKQEAgLTgwOCwxMCArODA1LDggQEAgc3RhdGljIGludCBlYl9sb29rdXBfdm1hcyhzdHJ1Y3Qg aTkxNV9leGVjYnVmZmVyICplYikKIAkJaWYgKHVubGlrZWx5KGVycikpCiAJCQlnb3RvIGVycl92 bWE7CiAKLQkJR0VNX0JVR19PTih2bWEgIT0gZWItPnZtYVtpXSk7Ci0JCUdFTV9CVUdfT04odm1h LT5leGVjX2ZsYWdzICE9ICZlYi0+ZmxhZ3NbaV0pOwogCQlHRU1fQlVHX09OKGRybV9tbV9ub2Rl X2FsbG9jYXRlZCgmdm1hLT5ub2RlKSAmJgotCQkJICAgZWJfdm1hX21pc3BsYWNlZCgmZWItPmV4 ZWNbaV0sIHZtYSwgZWItPmZsYWdzW2ldKSk7CisJCQkgICBlYl92bWFfbWlzcGxhY2VkKCZlYi0+ ZXhlY1tpXSwgdm1hLCBlYi0+dm1hW2ldLmZsYWdzKSk7CiAJfQogCiAJbXV0ZXhfdW5sb2NrKCZl Yi0+Z2VtX2NvbnRleHQtPm11dGV4KTsKQEAgLTgyMiwyNyArODE3LDI3IEBAIHN0YXRpYyBpbnQg ZWJfbG9va3VwX3ZtYXMoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCiBlcnJfb2JqOgogCWk5 MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKIGVycl92bWE6Ci0JZWItPnZtYVtpXSA9IE5VTEw7CisJ ZWItPnZtYVtpXS52bWEgPSBOVUxMOwogZXJyX2N0eDoKIAltdXRleF91bmxvY2soJmViLT5nZW1f Y29udGV4dC0+bXV0ZXgpOwogCXJldHVybiBlcnI7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaTkxNV92 bWEgKgorc3RhdGljIHN0cnVjdCBlYl92bWEgKgogZWJfZ2V0X3ZtYShjb25zdCBzdHJ1Y3QgaTkx NV9leGVjYnVmZmVyICplYiwgdW5zaWduZWQgbG9uZyBoYW5kbGUpCiB7CiAJaWYgKGViLT5sdXRf c2l6ZSA8IDApIHsKIAkJaWYgKGhhbmRsZSA+PSAtZWItPmx1dF9zaXplKQogCQkJcmV0dXJuIE5V TEw7Ci0JCXJldHVybiBlYi0+dm1hW2hhbmRsZV07CisJCXJldHVybiAmZWItPnZtYVtoYW5kbGVd OwogCX0gZWxzZSB7CiAJCXN0cnVjdCBobGlzdF9oZWFkICpoZWFkOwotCQlzdHJ1Y3QgaTkxNV92 bWEgKnZtYTsKKwkJc3RydWN0IGViX3ZtYSAqZXY7CiAKIAkJaGVhZCA9ICZlYi0+YnVja2V0c1to YXNoXzMyKGhhbmRsZSwgZWItPmx1dF9zaXplKV07Ci0JCWhsaXN0X2Zvcl9lYWNoX2VudHJ5KHZt YSwgaGVhZCwgZXhlY19ub2RlKSB7Ci0JCQlpZiAodm1hLT5leGVjX2hhbmRsZSA9PSBoYW5kbGUp Ci0JCQkJcmV0dXJuIHZtYTsKKwkJaGxpc3RfZm9yX2VhY2hfZW50cnkoZXYsIGhlYWQsIG5vZGUp IHsKKwkJCWlmIChldi0+aGFuZGxlID09IGhhbmRsZSkKKwkJCQlyZXR1cm4gZXY7CiAJCX0KIAkJ cmV0dXJuIE5VTEw7CiAJfQpAQCAtODU0LDIwICs4NDksMTggQEAgc3RhdGljIHZvaWQgZWJfcmVs ZWFzZV92bWFzKGNvbnN0IHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQogCXVuc2lnbmVkIGlu dCBpOwogCiAJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLQkJc3RydWN0IGk5MTVfdm1h ICp2bWEgPSBlYi0+dm1hW2ldOwotCQl1bnNpZ25lZCBpbnQgZmxhZ3MgPSBlYi0+ZmxhZ3NbaV07 CisJCXN0cnVjdCBlYl92bWEgKmV2ID0gJmViLT52bWFbaV07CisJCXN0cnVjdCBpOTE1X3ZtYSAq dm1hID0gZXYtPnZtYTsKIAogCQlpZiAoIXZtYSkKIAkJCWJyZWFrOwogCi0JCUdFTV9CVUdfT04o dm1hLT5leGVjX2ZsYWdzICE9ICZlYi0+ZmxhZ3NbaV0pOwotCQl2bWEtPmV4ZWNfZmxhZ3MgPSBO VUxMOwotCQllYi0+dm1hW2ldID0gTlVMTDsKKwkJZWItPnZtYVtpXS52bWEgPSBOVUxMOwogCi0J CWlmIChmbGFncyAmIF9fRVhFQ19PQkpFQ1RfSEFTX1BJTikKLQkJCV9fZWJfdW5yZXNlcnZlX3Zt YSh2bWEsIGZsYWdzKTsKKwkJaWYgKGV2LT5mbGFncyAmIF9fRVhFQ19PQkpFQ1RfSEFTX1BJTikK KwkJCV9fZWJfdW5yZXNlcnZlX3ZtYSh2bWEsIGV2LT5mbGFncyk7CiAKLQkJaWYgKGZsYWdzICYg X19FWEVDX09CSkVDVF9IQVNfUkVGKQorCQlpZiAoZXYtPmZsYWdzICYgX19FWEVDX09CSkVDVF9I QVNfUkVGKQogCQkJaTkxNV92bWFfcHV0KHZtYSk7CiAJfQogfQpAQCAtMTM3NywxMCArMTM3MCwx MCBAQCByZWxvY2F0ZV9lbnRyeShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAogc3RhdGljIHU2NAog ZWJfcmVsb2NhdGVfZW50cnkoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCi0JCSAgc3RydWN0 IGk5MTVfdm1hICp2bWEsCisJCSAgc3RydWN0IGViX3ZtYSAqZXYsCiAJCSAgY29uc3Qgc3RydWN0 IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5ICpyZWxvYykKIHsKLQlzdHJ1Y3QgaTkxNV92 bWEgKnRhcmdldDsKKwlzdHJ1Y3QgZWJfdm1hICp0YXJnZXQ7CiAJaW50IGVycjsKIAogCS8qIHdl J3ZlIGFscmVhZHkgaG9sZCBhIHJlZmVyZW5jZSB0byBhbGwgdmFsaWQgb2JqZWN0cyAqLwpAQCAt MTQxMiw3ICsxNDA1LDcgQEAgZWJfcmVsb2NhdGVfZW50cnkoc3RydWN0IGk5MTVfZXhlY2J1ZmZl ciAqZWIsCiAJfQogCiAJaWYgKHJlbG9jLT53cml0ZV9kb21haW4pIHsKLQkJKnRhcmdldC0+ZXhl Y19mbGFncyB8PSBFWEVDX09CSkVDVF9XUklURTsKKwkJdGFyZ2V0LT5mbGFncyB8PSBFWEVDX09C SkVDVF9XUklURTsKIAogCQkvKgogCQkgKiBTYW5keWJyaWRnZSBQUEdUVCBlcnJhdGE6IFdlIG5l ZWQgYSBnbG9iYWwgZ3R0IG1hcHBpbmcKQEAgLTE0MjIsNyArMTQxNSw4IEBAIGViX3JlbG9jYXRl X2VudHJ5KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAogCQkgKi8KIAkJaWYgKHJlbG9jLT53 cml0ZV9kb21haW4gPT0gSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OICYmCiAJCSAgICBJU19H RU4oZWItPmk5MTUsIDYpKSB7Ci0JCQllcnIgPSBpOTE1X3ZtYV9iaW5kKHRhcmdldCwgdGFyZ2V0 LT5vYmotPmNhY2hlX2xldmVsLAorCQkJZXJyID0gaTkxNV92bWFfYmluZCh0YXJnZXQtPnZtYSwK KwkJCQkJICAgIHRhcmdldC0+dm1hLT5vYmotPmNhY2hlX2xldmVsLAogCQkJCQkgICAgUElOX0dM T0JBTCwgTlVMTCk7CiAJCQlpZiAoV0FSTl9PTkNFKGVyciwKIAkJCQkgICAgICAiVW5leHBlY3Rl ZCBmYWlsdXJlIHRvIGJpbmQgdGFyZ2V0IFZNQSEiKSkKQEAgLTE0MzUsMTcgKzE0MjksMTcgQEAg ZWJfcmVsb2NhdGVfZW50cnkoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCiAJICogbW9yZSB3 b3JrIG5lZWRzIHRvIGJlIGRvbmUuCiAJICovCiAJaWYgKCFEQkdfRk9SQ0VfUkVMT0MgJiYKLQkg ICAgZ2VuOF9jYW5vbmljYWxfYWRkcih0YXJnZXQtPm5vZGUuc3RhcnQpID09IHJlbG9jLT5wcmVz dW1lZF9vZmZzZXQpCisJICAgIGdlbjhfY2Fub25pY2FsX2FkZHIodGFyZ2V0LT52bWEtPm5vZGUu c3RhcnQpID09IHJlbG9jLT5wcmVzdW1lZF9vZmZzZXQpCiAJCXJldHVybiAwOwogCiAJLyogQ2hl Y2sgdGhhdCB0aGUgcmVsb2NhdGlvbiBhZGRyZXNzIGlzIHZhbGlkLi4uICovCiAJaWYgKHVubGlr ZWx5KHJlbG9jLT5vZmZzZXQgPgotCQkgICAgIHZtYS0+c2l6ZSAtIChlYi0+cmVsb2NfY2FjaGUu dXNlXzY0Yml0X3JlbG9jID8gOCA6IDQpKSkgeworCQkgICAgIGV2LT52bWEtPnNpemUgLSAoZWIt PnJlbG9jX2NhY2hlLnVzZV82NGJpdF9yZWxvYyA/IDggOiA0KSkpIHsKIAkJRFJNX0RFQlVHKCJS ZWxvY2F0aW9uIGJleW9uZCBvYmplY3QgYm91bmRzOiAiCiAJCQkgICJ0YXJnZXQgJWQgb2Zmc2V0 ICVkIHNpemUgJWQuXG4iLAogCQkJICByZWxvYy0+dGFyZ2V0X2hhbmRsZSwKIAkJCSAgKGludCly ZWxvYy0+b2Zmc2V0LAotCQkJICAoaW50KXZtYS0+c2l6ZSk7CisJCQkgIChpbnQpZXYtPnZtYS0+ c2l6ZSk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAlpZiAodW5saWtlbHkocmVsb2MtPm9mZnNl dCAmIDMpKSB7CkBAIC0xNDY0LDE4ICsxNDU4LDE4IEBAIGViX3JlbG9jYXRlX2VudHJ5KHN0cnVj dCBpOTE1X2V4ZWNidWZmZXIgKmViLAogCSAqIGRvIHJlbG9jYXRpb25zIHdlIGFyZSBhbHJlYWR5 IHN0YWxsaW5nLCBkaXNhYmxlIHRoZSB1c2VyJ3Mgb3B0CiAJICogb3V0IG9mIG91ciBzeW5jaHJv bmlzYXRpb24uCiAJICovCi0JKnZtYS0+ZXhlY19mbGFncyAmPSB+RVhFQ19PQkpFQ1RfQVNZTkM7 CisJZXYtPmZsYWdzICY9IH5FWEVDX09CSkVDVF9BU1lOQzsKIAogCS8qIGFuZCB1cGRhdGUgdGhl IHVzZXIncyByZWxvY2F0aW9uIGVudHJ5ICovCi0JcmV0dXJuIHJlbG9jYXRlX2VudHJ5KHZtYSwg cmVsb2MsIGViLCB0YXJnZXQpOworCXJldHVybiByZWxvY2F0ZV9lbnRyeShldi0+dm1hLCByZWxv YywgZWIsIHRhcmdldC0+dm1hKTsKIH0KIAotc3RhdGljIGludCBlYl9yZWxvY2F0ZV92bWEoc3Ry dWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQorc3RhdGljIGlu dCBlYl9yZWxvY2F0ZV92bWEoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIHN0cnVjdCBlYl92 bWEgKmV2KQogewogI2RlZmluZSBOX1JFTE9DKHgpICgoeCkgLyBzaXplb2Yoc3RydWN0IGRybV9p OTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5KSkKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRp b25fZW50cnkgc3RhY2tbTl9SRUxPQyg1MTIpXTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9j YXRpb25fZW50cnkgX191c2VyICp1cmVsb2NzOwotCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY19vYmplY3QyICplbnRyeSA9IGV4ZWNfZW50cnkoZWIsIHZtYSk7CisJY29uc3Qgc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgKmVudHJ5ID0gZXYtPmV4ZWM7CiAJdW5zaWduZWQg aW50IHJlbWFpbjsKIAogCXVyZWxvY3MgPSB1NjRfdG9fdXNlcl9wdHIoZW50cnktPnJlbG9jc19w dHIpOwpAQCAtMTUxNSw3ICsxNTA5LDcgQEAgc3RhdGljIGludCBlYl9yZWxvY2F0ZV92bWEoc3Ry dWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCiAJCXJlbWFp biAtPSBjb3VudDsKIAkJZG8gewotCQkJdTY0IG9mZnNldCA9IGViX3JlbG9jYXRlX2VudHJ5KGVi LCB2bWEsIHIpOworCQkJdTY0IG9mZnNldCA9IGViX3JlbG9jYXRlX2VudHJ5KGViLCBldiwgcik7 CiAKIAkJCWlmIChsaWtlbHkob2Zmc2V0ID09IDApKSB7CiAJCQl9IGVsc2UgaWYgKChzNjQpb2Zm c2V0IDwgMCkgewpAQCAtMTU1OCwxNiArMTU1MiwxNiBAQCBzdGF0aWMgaW50IGViX3JlbG9jYXRl X3ZtYShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwgc3RydWN0IGk5MTVfdm1hICp2bWEpCiB9 CiAKIHN0YXRpYyBpbnQKLWViX3JlbG9jYXRlX3ZtYV9zbG93KHN0cnVjdCBpOTE1X2V4ZWNidWZm ZXIgKmViLCBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKK2ViX3JlbG9jYXRlX3ZtYV9zbG93KHN0cnVj dCBpOTE1X2V4ZWNidWZmZXIgKmViLCBzdHJ1Y3QgZWJfdm1hICpldikKIHsKLQljb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqZW50cnkgPSBleGVjX2VudHJ5KGViLCB2bWEp OworCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICplbnRyeSA9IGV2LT5l eGVjOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2NzID0KIAkJ dTY0X3RvX3B0cih0eXBlb2YoKnJlbG9jcyksIGVudHJ5LT5yZWxvY3NfcHRyKTsKIAl1bnNpZ25l ZCBpbnQgaTsKIAlpbnQgZXJyOwogCiAJZm9yIChpID0gMDsgaSA8IGVudHJ5LT5yZWxvY2F0aW9u X2NvdW50OyBpKyspIHsKLQkJdTY0IG9mZnNldCA9IGViX3JlbG9jYXRlX2VudHJ5KGViLCB2bWEs ICZyZWxvY3NbaV0pOworCQl1NjQgb2Zmc2V0ID0gZWJfcmVsb2NhdGVfZW50cnkoZWIsIGV2LCAm cmVsb2NzW2ldKTsKIAogCQlpZiAoKHM2NClvZmZzZXQgPCAwKSB7CiAJCQllcnIgPSAoaW50KW9m ZnNldDsKQEAgLTE3MTEsNyArMTcwNSw3IEBAIHN0YXRpYyBub2lubGluZSBpbnQgZWJfcmVsb2Nh dGVfc2xvdyhzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYikKIHsKIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gJmViLT5pOTE1LT5kcm07CiAJYm9vbCBoYXZlX2NvcHkgPSBmYWxzZTsKLQlzdHJ1 Y3QgaTkxNV92bWEgKnZtYTsKKwlzdHJ1Y3QgZWJfdm1hICpldjsKIAlpbnQgZXJyID0gMDsKIAog cmVwZWF0OgpAQCAtMTc2NywxNSArMTc2MSwxNSBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGViX3Jl bG9jYXRlX3Nsb3coc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCiAKIAlHRU1fQlVHX09OKCFl Yi0+YmF0Y2gpOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZlYi0+cmVsb2NzLCByZWxv Y19saW5rKSB7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShldiwgJmViLT5yZWxvY3MsIHJlbG9jX2xp bmspIHsKIAkJaWYgKCFoYXZlX2NvcHkpIHsKIAkJCXBhZ2VmYXVsdF9kaXNhYmxlKCk7Ci0JCQll cnIgPSBlYl9yZWxvY2F0ZV92bWEoZWIsIHZtYSk7CisJCQllcnIgPSBlYl9yZWxvY2F0ZV92bWEo ZWIsIGV2KTsKIAkJCXBhZ2VmYXVsdF9lbmFibGUoKTsKIAkJCWlmIChlcnIpCiAJCQkJZ290byBy ZXBlYXQ7CiAJCX0gZWxzZSB7Ci0JCQllcnIgPSBlYl9yZWxvY2F0ZV92bWFfc2xvdyhlYiwgdm1h KTsKKwkJCWVyciA9IGViX3JlbG9jYXRlX3ZtYV9zbG93KGViLCBldik7CiAJCQlpZiAoZXJyKQog CQkJCWdvdG8gZXJyOwogCQl9CkBAIC0xODIwLDEwICsxODE0LDEwIEBAIHN0YXRpYyBpbnQgZWJf cmVsb2NhdGUoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCiAKIAkvKiBUaGUgb2JqZWN0cyBh cmUgaW4gdGhlaXIgZmluYWwgbG9jYXRpb25zLCBhcHBseSB0aGUgcmVsb2NhdGlvbnMuICovCiAJ aWYgKGViLT5hcmdzLT5mbGFncyAmIF9fRVhFQ19IQVNfUkVMT0MpIHsKLQkJc3RydWN0IGk5MTVf dm1hICp2bWE7CisJCXN0cnVjdCBlYl92bWEgKmV2OwogCi0JCWxpc3RfZm9yX2VhY2hfZW50cnko dm1hLCAmZWItPnJlbG9jcywgcmVsb2NfbGluaykgewotCQkJaWYgKGViX3JlbG9jYXRlX3ZtYShl Yiwgdm1hKSkKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShldiwgJmViLT5yZWxvY3MsIHJlbG9jX2xp bmspIHsKKwkJCWlmIChlYl9yZWxvY2F0ZV92bWEoZWIsIGV2KSkKIAkJCQlnb3RvIHNsb3c7CiAJ CX0KIAl9CkBAIC0xODQ0LDM5ICsxODM4LDM0IEBAIHN0YXRpYyBpbnQgZWJfbW92ZV90b19ncHUo c3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIpCiAJd3dfYWNxdWlyZV9pbml0KCZhY3F1aXJlLCAm cmVzZXJ2YXRpb25fd3dfY2xhc3MpOwogCiAJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsK LQkJc3RydWN0IGk5MTVfdm1hICp2bWEgPSBlYi0+dm1hW2ldOworCQlzdHJ1Y3QgZWJfdm1hICpl diA9ICZlYi0+dm1hW2ldOworCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9IGV2LT52bWE7CiAKIAkJ ZXJyID0gd3dfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZ2bWEtPnJlc3YtPmxvY2ssICZhY3F1 aXJlKTsKLQkJaWYgKCFlcnIpCi0JCQljb250aW51ZTsKLQotCQlHRU1fQlVHX09OKGVyciA9PSAt RUFMUkVBRFkpOyAvKiBObyBkdXBsaWNhdGUgdm1hICovCi0KIAkJaWYgKGVyciA9PSAtRURFQURM SykgewogCQkJR0VNX0JVR19PTihpID09IDApOwogCQkJZG8gewogCQkJCWludCBqID0gaSAtIDE7 CiAKLQkJCQl3d19tdXRleF91bmxvY2soJmViLT52bWFbal0tPnJlc3YtPmxvY2spOworCQkJCXd3 X211dGV4X3VubG9jaygmZWItPnZtYVtqXS52bWEtPnJlc3YtPmxvY2spOwogCi0JCQkJc3dhcChl Yi0+ZmxhZ3NbaV0sIGViLT5mbGFnc1tqXSk7CiAJCQkJc3dhcChlYi0+dm1hW2ldLCAgZWItPnZt YVtqXSk7Ci0JCQkJZWItPnZtYVtpXS0+ZXhlY19mbGFncyA9ICZlYi0+ZmxhZ3NbaV07CiAJCQl9 IHdoaWxlICgtLWkpOwotCQkJR0VNX0JVR19PTih2bWEgIT0gZWItPnZtYVswXSk7Ci0JCQl2bWEt PmV4ZWNfZmxhZ3MgPSAmZWItPmZsYWdzWzBdOwogCiAJCQllcnIgPSB3d19tdXRleF9sb2NrX3Ns b3dfaW50ZXJydXB0aWJsZSgmdm1hLT5yZXN2LT5sb2NrLAogCQkJCQkJCSAgICAgICAmYWNxdWly ZSk7CiAJCX0KKwkJaWYgKGVyciA9PSAtRUFMUkVBRFkpCisJCQllcnIgPSAwOwogCQlpZiAoZXJy KQogCQkJYnJlYWs7CiAJfQogCXd3X2FjcXVpcmVfZG9uZSgmYWNxdWlyZSk7CiAKIAl3aGlsZSAo aS0tKSB7Ci0JCXVuc2lnbmVkIGludCBmbGFncyA9IGViLT5mbGFnc1tpXTsKLQkJc3RydWN0IGk5 MTVfdm1hICp2bWEgPSBlYi0+dm1hW2ldOworCQlzdHJ1Y3QgZWJfdm1hICpldiA9ICZlYi0+dm1h W2ldOworCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9IGV2LT52bWE7CisJCXVuc2lnbmVkIGludCBm bGFncyA9IGV2LT5mbGFnczsKIAkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHZt YS0+b2JqOwogCiAJCWFzc2VydF92bWFfaGVsZCh2bWEpOwpAQCAtMTkyMCwxMCArMTkwOSwxMCBA QCBzdGF0aWMgaW50IGViX21vdmVfdG9fZ3B1KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQog CQlpOTE1X3ZtYV91bmxvY2sodm1hKTsKIAogCQlfX2ViX3VucmVzZXJ2ZV92bWEodm1hLCBmbGFn cyk7Ci0JCXZtYS0+ZXhlY19mbGFncyA9IE5VTEw7Ci0KIAkJaWYgKHVubGlrZWx5KGZsYWdzICYg X19FWEVDX09CSkVDVF9IQVNfUkVGKSkKIAkJCWk5MTVfdm1hX3B1dCh2bWEpOworCisJCWV2LT52 bWEgPSBOVUxMOwogCX0KIAl3d19hY3F1aXJlX2ZpbmkoJmFjcXVpcmUpOwogCkBAIC0yMDAxLDcg KzE5OTAsNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfdm1hICplYl9wYXJzZShzdHJ1Y3QgaTkxNV9l eGVjYnVmZmVyICplYiwgYm9vbCBpc19tYXN0ZXIpCiAJCXJldHVybiBFUlJfQ0FTVChwb29sKTsK IAogCWVyciA9IGludGVsX2VuZ2luZV9jbWRfcGFyc2VyKGViLT5lbmdpbmUsCi0JCQkJICAgICAg ZWItPmJhdGNoLT5vYmosCisJCQkJICAgICAgZWItPmJhdGNoLT52bWEtPm9iaiwKIAkJCQkgICAg ICBwb29sLT5vYmosCiAJCQkJICAgICAgZWItPmJhdGNoX3N0YXJ0X29mZnNldCwKIAkJCQkgICAg ICBlYi0+YmF0Y2hfbGVuLApAQCAtMjAxOCwxMCArMjAwNyw5IEBAIHN0YXRpYyBzdHJ1Y3QgaTkx NV92bWEgKmViX3BhcnNlKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLCBib29sIGlzX21hc3Rl cikKIAlpZiAoSVNfRVJSKHZtYSkpCiAJCWdvdG8gZXJyOwogCi0JZWItPnZtYVtlYi0+YnVmZmVy X2NvdW50XSA9IGk5MTVfdm1hX2dldCh2bWEpOwotCWViLT5mbGFnc1tlYi0+YnVmZmVyX2NvdW50 XSA9CisJZWItPnZtYVtlYi0+YnVmZmVyX2NvdW50XS52bWEgPSBpOTE1X3ZtYV9nZXQodm1hKTsK KwllYi0+dm1hW2ViLT5idWZmZXJfY291bnRdLmZsYWdzID0KIAkJX19FWEVDX09CSkVDVF9IQVNf UElOIHwgX19FWEVDX09CSkVDVF9IQVNfUkVGOwotCXZtYS0+ZXhlY19mbGFncyA9ICZlYi0+Zmxh Z3NbZWItPmJ1ZmZlcl9jb3VudF07CiAJZWItPmJ1ZmZlcl9jb3VudCsrOwogCiAJdm1hLT5wcml2 YXRlID0gcG9vbDsKQEAgLTIwNDQsNyArMjAzMiw3IEBAIGFkZF90b19jbGllbnQoc3RydWN0IGk5 MTVfcmVxdWVzdCAqcnEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIAlzcGluX3VubG9jaygmZmls ZV9wcml2LT5tbS5sb2NrKTsKIH0KIAotc3RhdGljIGludCBlYl9zdWJtaXQoc3RydWN0IGk5MTVf ZXhlY2J1ZmZlciAqZWIpCitzdGF0aWMgaW50IGViX3N1Ym1pdChzdHJ1Y3QgaTkxNV9leGVjYnVm ZmVyICplYiwgc3RydWN0IGk5MTVfdm1hICpiYXRjaCkKIHsKIAlpbnQgZXJyOwogCkBAIC0yMDcx LDcgKzIwNTksNyBAQCBzdGF0aWMgaW50IGViX3N1Ym1pdChzdHJ1Y3QgaTkxNV9leGVjYnVmZmVy ICplYikKIAl9CiAKIAllcnIgPSBlYi0+ZW5naW5lLT5lbWl0X2JiX3N0YXJ0KGViLT5yZXF1ZXN0 LAotCQkJCQllYi0+YmF0Y2gtPm5vZGUuc3RhcnQgKworCQkJCQliYXRjaC0+bm9kZS5zdGFydCAr CiAJCQkJCWViLT5iYXRjaF9zdGFydF9vZmZzZXQsCiAJCQkJCWViLT5iYXRjaF9sZW4sCiAJCQkJ CWViLT5iYXRjaF9mbGFncyk7CkBAIC0yNDM0LDYgKzI0MjIsNyBAQCBpOTE1X2dlbV9kb19leGVj YnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJc3RydWN0IGRtYV9mZW5jZSAqaW5fZmVu Y2UgPSBOVUxMOwogCXN0cnVjdCBkbWFfZmVuY2UgKmV4ZWNfZmVuY2UgPSBOVUxMOwogCXN0cnVj dCBzeW5jX2ZpbGUgKm91dF9mZW5jZSA9IE5VTEw7CisJc3RydWN0IGk5MTVfdm1hICpiYXRjaDsK IAlpbnQgb3V0X2ZlbmNlX2ZkID0gLTE7CiAJaW50IGVycjsKIApAQCAtMjQ0OCw5ICsyNDM3LDgg QEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlhcmdz LT5mbGFncyB8PSBfX0VYRUNfSEFTX1JFTE9DOwogCiAJZWIuZXhlYyA9IGV4ZWM7Ci0JZWIudm1h ID0gKHN0cnVjdCBpOTE1X3ZtYSAqKikoZXhlYyArIGFyZ3MtPmJ1ZmZlcl9jb3VudCArIDEpOwot CWViLnZtYVswXSA9IE5VTEw7Ci0JZWIuZmxhZ3MgPSAodW5zaWduZWQgaW50ICopKGViLnZtYSAr IGFyZ3MtPmJ1ZmZlcl9jb3VudCArIDEpOworCWViLnZtYSA9IChzdHJ1Y3QgZWJfdm1hICopKGV4 ZWMgKyBhcmdzLT5idWZmZXJfY291bnQgKyAxKTsKKwllYi52bWFbMF0udm1hID0gTlVMTDsKIAog CWViLmludmFsaWRfZmxhZ3MgPSBfX0VYRUNfT0JKRUNUX1VOS05PV05fRkxBR1M7CiAJcmVsb2Nf Y2FjaGVfaW5pdCgmZWIucmVsb2NfY2FjaGUsIGViLmk5MTUpOwpAQCAtMjUyNywxMyArMjUxNSwx NiBAQCBpOTE1X2dlbV9kb19leGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWdv dG8gZXJyX3ZtYTsKIAl9CiAKLQlpZiAodW5saWtlbHkoKmViLmJhdGNoLT5leGVjX2ZsYWdzICYg RVhFQ19PQkpFQ1RfV1JJVEUpKSB7CisJaWYgKHVubGlrZWx5KGViLmJhdGNoLT5mbGFncyAmIEVY RUNfT0JKRUNUX1dSSVRFKSkgewogCQlEUk1fREVCVUcoIkF0dGVtcHRpbmcgdG8gdXNlIHNlbGYt bW9kaWZ5aW5nIGJhdGNoIGJ1ZmZlclxuIik7CiAJCWVyciA9IC1FSU5WQUw7CiAJCWdvdG8gZXJy X3ZtYTsKIAl9Ci0JaWYgKGViLmJhdGNoX3N0YXJ0X29mZnNldCA+IGViLmJhdGNoLT5zaXplIHx8 Ci0JICAgIGViLmJhdGNoX2xlbiA+IGViLmJhdGNoLT5zaXplIC0gZWIuYmF0Y2hfc3RhcnRfb2Zm c2V0KSB7CisKKwliYXRjaCA9IGViLmJhdGNoLT52bWE7CisJaWYgKHJhbmdlX292ZXJmbG93c190 KHU2NCwKKwkJCSAgICAgIGViLmJhdGNoX3N0YXJ0X29mZnNldCwgZWIuYmF0Y2hfbGVuLAorCQkJ ICAgICAgYmF0Y2gtPnNpemUpKSB7CiAJCURSTV9ERUJVRygiQXR0ZW1wdGluZyB0byB1c2Ugb3V0 LW9mLWJvdW5kcyBiYXRjaFxuIik7CiAJCWVyciA9IC1FSU5WQUw7CiAJCWdvdG8gZXJyX3ZtYTsK QEAgLTI1NjAsMTIgKzI1NTEsMTIgQEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCQkJICovCiAJCQllYi5iYXRjaF9mbGFncyB8PSBJOTE1X0RJU1BBVENI X1NFQ1VSRTsKIAkJCWViLmJhdGNoX3N0YXJ0X29mZnNldCA9IDA7Ci0JCQllYi5iYXRjaCA9IHZt YTsKKwkJCWJhdGNoID0gdm1hOwogCQl9CiAJfQogCiAJaWYgKGViLmJhdGNoX2xlbiA9PSAwKQot CQllYi5iYXRjaF9sZW4gPSBlYi5iYXRjaC0+c2l6ZSAtIGViLmJhdGNoX3N0YXJ0X29mZnNldDsK KwkJZWIuYmF0Y2hfbGVuID0gYmF0Y2gtPnNpemUgLSBlYi5iYXRjaF9zdGFydF9vZmZzZXQ7CiAK IAkvKgogCSAqIHNuYi9pdmIvdmx2IGNvbmZsYXRlIHRoZSAiYmF0Y2ggaW4gcHBndHQiIGJpdCB3 aXRoIHRoZSAibm9uLXNlY3VyZQpAQCAtMjU4NCwxMyArMjU3NSwxMyBAQCBpOTE1X2dlbV9kb19l eGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCSAqICAgZml0dGluZyBkdWUgdG8g ZnJhZ21lbnRhdGlvbi4KIAkJICogU28gdGhpcyBpcyBhY3R1YWxseSBzYWZlLgogCQkgKi8KLQkJ dm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKGViLmJhdGNoLT5vYmosIE5VTEwsIDAsIDAs IDApOworCQl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oYmF0Y2gtPm9iaiwgTlVMTCwg MCwgMCwgMCk7CiAJCWlmIChJU19FUlIodm1hKSkgewogCQkJZXJyID0gUFRSX0VSUih2bWEpOwog CQkJZ290byBlcnJfdm1hOwogCQl9CiAKLQkJZWIuYmF0Y2ggPSB2bWE7CisJCWJhdGNoID0gdm1h OwogCX0KIAogCS8qIEFsbCBHUFUgcmVsb2NhdGlvbiBiYXRjaGVzIG11c3QgYmUgc3VibWl0dGVk IHByaW9yIHRvIHRoZSB1c2VyIHJxICovCkBAIC0yNjM3LDEyICsyNjI4LDEyIEBAIGk5MTVfZ2Vt X2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkgKiBpbmFjdGl2ZV9saXN0 IGFuZCBsb3NlIGl0cyBhY3RpdmUgcmVmZXJlbmNlLiBIZW5jZSB3ZSBkbyBub3QgbmVlZAogCSAq IHRvIGV4cGxpY2l0bHkgaG9sZCBhbm90aGVyIHJlZmVyZW5jZSBoZXJlLgogCSAqLwotCWViLnJl cXVlc3QtPmJhdGNoID0gZWIuYmF0Y2g7Ci0JaWYgKGViLmJhdGNoLT5wcml2YXRlKQotCQlpbnRl bF9lbmdpbmVfcG9vbF9tYXJrX2FjdGl2ZShlYi5iYXRjaC0+cHJpdmF0ZSwgZWIucmVxdWVzdCk7 CisJZWIucmVxdWVzdC0+YmF0Y2ggPSBiYXRjaDsKKwlpZiAoYmF0Y2gtPnByaXZhdGUpCisJCWlu dGVsX2VuZ2luZV9wb29sX21hcmtfYWN0aXZlKGJhdGNoLT5wcml2YXRlLCBlYi5yZXF1ZXN0KTsK IAogCXRyYWNlX2k5MTVfcmVxdWVzdF9xdWV1ZShlYi5yZXF1ZXN0LCBlYi5iYXRjaF9mbGFncyk7 Ci0JZXJyID0gZWJfc3VibWl0KCZlYik7CisJZXJyID0gZWJfc3VibWl0KCZlYiwgYmF0Y2gpOwog ZXJyX3JlcXVlc3Q6CiAJYWRkX3RvX2NsaWVudChlYi5yZXF1ZXN0LCBmaWxlKTsKIAlpOTE1X3Jl cXVlc3RfYWRkKGViLnJlcXVlc3QpOwpAQCAtMjY2Myw5ICsyNjU0LDkgQEAgaTkxNV9nZW1fZG9f ZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCiBlcnJfYmF0Y2hfdW5waW46CiAJ aWYgKGViLmJhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUpCi0JCWk5MTVfdm1hX3Vu cGluKGViLmJhdGNoKTsKLQlpZiAoZWIuYmF0Y2gtPnByaXZhdGUpCi0JCWludGVsX2VuZ2luZV9w b29sX3B1dChlYi5iYXRjaC0+cHJpdmF0ZSk7CisJCWk5MTVfdm1hX3VucGluKGJhdGNoKTsKKwlp ZiAoYmF0Y2gtPnByaXZhdGUpCisJCWludGVsX2VuZ2luZV9wb29sX3B1dChiYXRjaC0+cHJpdmF0 ZSk7CiBlcnJfdm1hOgogCWlmIChlYi5leGVjKQogCQllYl9yZWxlYXNlX3ZtYXMoJmViKTsKQEAg LTI2ODgsOSArMjY3OSw3IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAogc3RhdGljIHNpemVfdCBlYl9lbGVtZW50X3NpemUodm9pZCkKIHsKLQlyZXR1 cm4gKHNpemVvZihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MikgKwotCQlzaXplb2Yo c3RydWN0IGk5MTVfdm1hICopICsKLQkJc2l6ZW9mKHVuc2lnbmVkIGludCkpOworCXJldHVybiBz aXplb2Yoc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIpICsgc2l6ZW9mKHN0cnVjdCBl Yl92bWEpOwogfQogCiBzdGF0aWMgYm9vbCBjaGVja19idWZmZXJfY291bnQoc2l6ZV90IGNvdW50 KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKaW5kZXggNDY1OTMyODEzYmM1Li43MTQwMjA1NmQ4NDYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaApAQCAtMTQ3LDIxICsxNDcsMTAgQEAgc3RydWN0IGk5 MTVfdm1hIHsKIAlzdHJ1Y3QgcmJfbm9kZSBvYmpfbm9kZTsKIAlzdHJ1Y3QgaGxpc3Rfbm9kZSBv YmpfaGFzaDsKIAotCS8qKiBUaGlzIHZtYSdzIHBsYWNlIGluIHRoZSBleGVjYnVmIHJlc2VydmF0 aW9uIGxpc3QgKi8KLQlzdHJ1Y3QgbGlzdF9oZWFkIGV4ZWNfbGluazsKLQlzdHJ1Y3QgbGlzdF9o ZWFkIHJlbG9jX2xpbms7Ci0KIAkvKiogVGhpcyB2bWEncyBwbGFjZSBpbiB0aGUgZXZpY3Rpb24g bGlzdCAqLwogCXN0cnVjdCBsaXN0X2hlYWQgZXZpY3RfbGluazsKIAogCXN0cnVjdCBsaXN0X2hl YWQgY2xvc2VkX2xpbms7Ci0KLQkvKioKLQkgKiBVc2VkIGZvciBwZXJmb3JtaW5nIHJlbG9jYXRp b25zIGR1cmluZyBleGVjYnVmZmVyIGluc2VydGlvbi4KLQkgKi8KLQl1bnNpZ25lZCBpbnQgKmV4 ZWNfZmxhZ3M7Ci0Jc3RydWN0IGhsaXN0X25vZGUgZXhlY19ub2RlOwotCXUzMiBleGVjX2hhbmRs ZTsKIH07CiAKIHN0cnVjdCBpOTE1X3ZtYSAqCi0tIAoyLjI0LjAKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==