From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dongwon Kim Subject: [RFC PATCH 24/60] hyper_dmabuf: waits for resp only if WAIT_AFTER_SYNC_REQ == 1 Date: Tue, 19 Dec 2017 11:29:40 -0800 Message-ID: <1513711816-2618-24-git-send-email-dongwon.kim@intel.com> References: <1513711816-2618-1-git-send-email-dongwon.kim@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1513711816-2618-1-git-send-email-dongwon.kim@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: linux-kernel@vger.kernel.org Cc: xen-devel@lists.xenproject.org, mateuszx.potrola@intel.com, dri-devel@lists.freedesktop.org, dongwon.kim@intel.com List-Id: dri-devel@lists.freedesktop.org aHlwZXJfZG1hYnVmJ3Mgc3luY19yZXF1ZXN0IChwcmV2aW91c2x5IGh5cGVyX2RtYWJ1Zl9zeW5j X3JlcXVlc3RfCmFuZF93YWl0KSBub3cgZG9lcyBub3Qgd2FpdCBmb3IgdGhlIHJlc3BvbnNlIGZy b20gZXhwb3J0ZXIgaWYKV0FJVF9BRlRFUl9TWU5DX1JFUT09MC4gVGhpcyBpcyB0byBwcmV2ZW50 IHBlZm9ybWFuY2UgZGVncmFkYXRpb24KZHVlIHRvIHRoZSBjb21tdW5pY2F0aW9uIGxhdGVuY3kg d2hpbGUgZG9pbmcgaW5kaXJlY3QgaHlwZXIgRE1BQlVGCnN5bmNocm9uaXphdGlvbi4KClRoaXMg cGF0Y2ggYWxzbyBpbmNsdWRlcyBzb21lIG1pbm9yIGNoYW5nZXMgYXMgZm9sbG93ZWQ6CgoxLiBo eXBlcl9kbWFidWZfZnJlZV9zZ3QgaXMgcmVtb3ZlZC4gTm93IHdlIGNhbGwgc2dfZnJlZV90YWJs ZSBhbmQKICAga2ZyZWUgZGlyZWN0bHkgZnJvbSBhbGwgdGhlIHBsYWNlcyB3aGVyZSB0aGlzIGZ1 bmN0aW9uIHdhcyBleGVjdXRlZC4KICAgVGhpcyB3YXMgZG9uZSBmb3IgY29uY2lzZW5lc3MuCgoy LiBjaGFuZ2VkIGh5cGVyX2RtYWJ1Zl9nZXRfZG9taWQgdG8gaHlwZXJfZG1hYnVmX3hlbl9nZXRf ZG9taWQgZm9yCiAgIGNvbnNpc3RlbmNlIGluIGZ1bmMgbmFtZXMgaW4gdGhlIGJhY2tlbmQuCgoz LiBzb21lIG1pbm9yIGNsZWFuLXVwcwoKU2lnbmVkLW9mZi1ieTogRG9uZ3dvbiBLaW0gPGRvbmd3 b24ua2ltQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1h YnVmX2NvbmYuaCAgICAgICB8ICAyIC0KIGRyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9k bWFidWZfaW1wLmMgICAgICAgIHwgOTEgKysrKysrKysrKystLS0tLS0tLS0tLQogZHJpdmVycy94 ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9tc2cuYyAgICAgICAgfCAgMiAtCiAuLi4veGVu L2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfcmVtb3RlX3N5bmMuYyAgICB8ICAyICstCiAuLi4v eGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9jb21tLmMgICB8IDE0ICsrLS0K IC4uLi94ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2NvbW0uaCAgIHwgIDIg Ky0KIC4uLi94ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2Rydi5jICAgIHwg IDIgKy0KIC4uLi94ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX3NobS5jICAg IHwgMjEgKysrLS0KIDggZmlsZXMgY2hhbmdlZCwgNjkgaW5zZXJ0aW9ucygrKSwgNjcgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1 Zl9jb25mLmggYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVmX2NvbmYuaApp bmRleCBlZTE4ODZjLi5kNTEyNWYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFi dWYvaHlwZXJfZG1hYnVmX2NvbmYuaAorKysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlw ZXJfZG1hYnVmX2NvbmYuaApAQCAtMjMsNSArMjMsMyBAQAogICovCiAKIC8qIGNvbmZpZ3VyYXRp b24gKi8KLQotI2RlZmluZSBDVVJSRU5UX1RBUkdFVCBYRU4KZGlmZiAtLWdpdCBhL2RyaXZlcnMv eGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfaW1wLmMgYi9kcml2ZXJzL3hlbi9oeXBlcl9k bWFidWYvaHlwZXJfZG1hYnVmX2ltcC5jCmluZGV4IGEwMTcwNzAuLmQ3YTM1ZmMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfaW1wLmMKKysrIGIvZHJp dmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9pbXAuYwpAQCAtMTMxLDcgKzEzMSw3 IEBAIHN0cnVjdCBoeXBlcl9kbWFidWZfcGFnZXNfaW5mbyAqaHlwZXJfZG1hYnVmX2V4dF9wZ3Mo c3RydWN0IHNnX3RhYmxlICpzZ3QpCiAKIC8qIGNyZWF0ZSBzZ190YWJsZSB3aXRoIGdpdmVuIHBh Z2VzIGFuZCBvdGhlciBwYXJhbWV0ZXJzICovCiBzdHJ1Y3Qgc2dfdGFibGUqIGh5cGVyX2RtYWJ1 Zl9jcmVhdGVfc2d0KHN0cnVjdCBwYWdlICoqcGFnZXMsCi0JCQkJaW50IGZyc3Rfb2ZzdCwgaW50 IGxhc3RfbGVuLCBpbnQgbmVudHMpCisJCQkJCSBpbnQgZnJzdF9vZnN0LCBpbnQgbGFzdF9sZW4s IGludCBuZW50cykKIHsKIAlzdHJ1Y3Qgc2dfdGFibGUgKnNndDsKIAlzdHJ1Y3Qgc2NhdHRlcmxp c3QgKnNnbDsKQEAgLTE0NCw3ICsxNDQsMTEgQEAgc3RydWN0IHNnX3RhYmxlKiBoeXBlcl9kbWFi dWZfY3JlYXRlX3NndChzdHJ1Y3QgcGFnZSAqKnBhZ2VzLAogCiAJcmV0ID0gc2dfYWxsb2NfdGFi bGUoc2d0LCBuZW50cywgR0ZQX0tFUk5FTCk7CiAJaWYgKHJldCkgewotCQloeXBlcl9kbWFidWZf ZnJlZV9zZ3Qoc2d0KTsKKwkJaWYgKHNndCkgeworCQkJc2dfZnJlZV90YWJsZShzZ3QpOworCQkJ a2ZyZWUoc2d0KTsKKwkJfQorCiAJCXJldHVybiBOVUxMOwogCX0KIApAQCAtMTY1LDE1ICsxNjks NiBAQCBzdHJ1Y3Qgc2dfdGFibGUqIGh5cGVyX2RtYWJ1Zl9jcmVhdGVfc2d0KHN0cnVjdCBwYWdl ICoqcGFnZXMsCiAJcmV0dXJuIHNndDsKIH0KIAotLyogZnJlZSBzZ190YWJsZSAqLwotdm9pZCBo eXBlcl9kbWFidWZfZnJlZV9zZ3Qoc3RydWN0IHNnX3RhYmxlKiBzZ3QpCi17Ci0JaWYgKHNndCkg ewotCQlzZ19mcmVlX3RhYmxlKHNndCk7Ci0JCWtmcmVlKHNndCk7Ci0JfQotfQotCiBpbnQgaHlw ZXJfZG1hYnVmX2NsZWFudXBfc2d0X2luZm8oc3RydWN0IGh5cGVyX2RtYWJ1Zl9zZ3RfaW5mbyAq c2d0X2luZm8sIGludCBmb3JjZSkKIHsKIAlzdHJ1Y3Qgc2d0X2xpc3QgKnNndGw7CkBAIC0yNjQs NyArMjU5LDkgQEAgaW50IGh5cGVyX2RtYWJ1Zl9jbGVhbnVwX3NndF9pbmZvKHN0cnVjdCBoeXBl cl9kbWFidWZfc2d0X2luZm8gKnNndF9pbmZvLCBpbnQgZm8KIAlyZXR1cm4gMDsKIH0KIAotaW5s aW5lIGludCBoeXBlcl9kbWFidWZfc3luY19yZXF1ZXN0X2FuZF93YWl0KGludCBpZCwgaW50IGRt YWJ1Zl9vcHMpCisjZGVmaW5lIFdBSVRfQUZURVJfU1lOQ19SRVEgMQorCitpbmxpbmUgaW50IGh5 cGVyX2RtYWJ1Zl9zeW5jX3JlcXVlc3QoaW50IGlkLCBpbnQgZG1hYnVmX29wcykKIHsKIAlzdHJ1 Y3QgaHlwZXJfZG1hYnVmX3JlcSAqcmVxOwogCXN0cnVjdCBoeXBlcl9kbWFidWZfYmFja2VuZF9v cHMgKm9wcyA9IGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmJhY2tlbmRfb3BzOwpAQCAtMjc5LDcgKzI3 Niw3IEBAIGlubGluZSBpbnQgaHlwZXJfZG1hYnVmX3N5bmNfcmVxdWVzdF9hbmRfd2FpdChpbnQg aWQsIGludCBkbWFidWZfb3BzKQogCWh5cGVyX2RtYWJ1Zl9jcmVhdGVfcmVxdWVzdChyZXEsIEhZ UEVSX0RNQUJVRl9PUFNfVE9fU09VUkNFLCAmb3BlcmFuZHNbMF0pOwogCiAJLyogc2VuZCByZXF1 ZXN0IGFuZCB3YWl0IGZvciBhIHJlc3BvbnNlICovCi0JcmV0ID0gb3BzLT5zZW5kX3JlcShIWVBF Ul9ETUFCVUZfRE9NX0lEKGlkKSwgcmVxLCB0cnVlKTsKKwlyZXQgPSBvcHMtPnNlbmRfcmVxKEhZ UEVSX0RNQUJVRl9ET01fSUQoaWQpLCByZXEsIFdBSVRfQUZURVJfU1lOQ19SRVEpOwogCiAJa2Zy ZWUocmVxKTsKIApAQCAtMjk3LDggKzI5NCw4IEBAIHN0YXRpYyBpbnQgaHlwZXJfZG1hYnVmX29w c19hdHRhY2goc3RydWN0IGRtYV9idWYqIGRtYWJ1Ziwgc3RydWN0IGRldmljZSogZGV2LAogCiAJ c2d0X2luZm8gPSAoc3RydWN0IGh5cGVyX2RtYWJ1Zl9pbXBvcnRlZF9zZ3RfaW5mbyAqKWF0dGFj aC0+ZG1hYnVmLT5wcml2OwogCi0JcmV0ID0gaHlwZXJfZG1hYnVmX3N5bmNfcmVxdWVzdF9hbmRf d2FpdChzZ3RfaW5mby0+aHlwZXJfZG1hYnVmX2lkLAotCQkJCQkJIEhZUEVSX0RNQUJVRl9PUFNf QVRUQUNIKTsKKwlyZXQgPSBoeXBlcl9kbWFidWZfc3luY19yZXF1ZXN0KHNndF9pbmZvLT5oeXBl cl9kbWFidWZfaWQsCisJCQkJCUhZUEVSX0RNQUJVRl9PUFNfQVRUQUNIKTsKIAogCWlmIChyZXQg PCAwKSB7CiAJCWRldl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLApAQCAtMzE5LDgg KzMxNiw4IEBAIHN0YXRpYyB2b2lkIGh5cGVyX2RtYWJ1Zl9vcHNfZGV0YWNoKHN0cnVjdCBkbWFf YnVmKiBkbWFidWYsIHN0cnVjdCBkbWFfYnVmX2F0dGFjCiAKIAlzZ3RfaW5mbyA9IChzdHJ1Y3Qg aHlwZXJfZG1hYnVmX2ltcG9ydGVkX3NndF9pbmZvICopYXR0YWNoLT5kbWFidWYtPnByaXY7CiAK LQlyZXQgPSBoeXBlcl9kbWFidWZfc3luY19yZXF1ZXN0X2FuZF93YWl0KHNndF9pbmZvLT5oeXBl cl9kbWFidWZfaWQsCi0JCQkJCQkgSFlQRVJfRE1BQlVGX09QU19ERVRBQ0gpOworCXJldCA9IGh5 cGVyX2RtYWJ1Zl9zeW5jX3JlcXVlc3Qoc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCwKKwkJCQkJ SFlQRVJfRE1BQlVGX09QU19ERVRBQ0gpOwogCiAJaWYgKHJldCA8IDApIHsKIAkJZGV2X2Vyciho eXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCkBAIC0zNTQsOCArMzUxLDggQEAgc3RhdGljIHN0 cnVjdCBzZ190YWJsZSogaHlwZXJfZG1hYnVmX29wc19tYXAoc3RydWN0IGRtYV9idWZfYXR0YWNo bWVudCAqYXR0YWNobWUKICAgICAgICAgICAgICAgICBnb3RvIGVycl9mcmVlX3NnOwogICAgICAg ICB9CiAKLQlyZXQgPSBoeXBlcl9kbWFidWZfc3luY19yZXF1ZXN0X2FuZF93YWl0KHNndF9pbmZv LT5oeXBlcl9kbWFidWZfaWQsCi0JCQkJCQlIWVBFUl9ETUFCVUZfT1BTX01BUCk7CisJcmV0ID0g aHlwZXJfZG1hYnVmX3N5bmNfcmVxdWVzdChzZ3RfaW5mby0+aHlwZXJfZG1hYnVmX2lkLAorCQkJ CQlIWVBFUl9ETUFCVUZfT1BTX01BUCk7CiAKIAlrZnJlZShwYWdlX2luZm8tPnBhZ2VzKTsKIAlr ZnJlZShwYWdlX2luZm8pOwpAQCAtMzkwLDggKzM4Nyw4IEBAIHN0YXRpYyB2b2lkIGh5cGVyX2Rt YWJ1Zl9vcHNfdW5tYXAoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNobWVudCwKIAlz Z19mcmVlX3RhYmxlKHNnKTsKIAlrZnJlZShzZyk7CiAKLQlyZXQgPSBoeXBlcl9kbWFidWZfc3lu Y19yZXF1ZXN0X2FuZF93YWl0KHNndF9pbmZvLT5oeXBlcl9kbWFidWZfaWQsCi0JCQkJCQlIWVBF Ul9ETUFCVUZfT1BTX1VOTUFQKTsKKwlyZXQgPSBoeXBlcl9kbWFidWZfc3luY19yZXF1ZXN0KHNn dF9pbmZvLT5oeXBlcl9kbWFidWZfaWQsCisJCQkJCUhZUEVSX0RNQUJVRl9PUFNfVU5NQVApOwog CiAJaWYgKHJldCA8IDApIHsKIAkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2Us CkBAIC00MTksMTkgKzQxNiwyMyBAQCBzdGF0aWMgdm9pZCBoeXBlcl9kbWFidWZfb3BzX3JlbGVh c2Uoc3RydWN0IGRtYV9idWYgKmRtYV9idWYpCiAKIAlpZiAoc2d0X2luZm8tPm51bV9pbXBvcnRl cnMgPT0gMCkgewogCQlvcHMtPnVubWFwX3NoYXJlZF9wYWdlcygmc2d0X2luZm8tPnJlZnNfaW5m bywgc2d0X2luZm8tPm5lbnRzKTsKLQkJaHlwZXJfZG1hYnVmX2ZyZWVfc2d0KHNndF9pbmZvLT5z Z3QpOwotCQlzZ3RfaW5mby0+c2d0ID0gTlVMTDsKKworCQlpZiAoc2d0X2luZm8tPnNndCkgewor CQkJc2dfZnJlZV90YWJsZShzZ3RfaW5mby0+c2d0KTsKKwkJCWtmcmVlKHNndF9pbmZvLT5zZ3Qp OworCQkJc2d0X2luZm8tPnNndCA9IE5VTEw7CisJCX0KIAl9CiAKIAlmaW5hbF9yZWxlYXNlID0g c2d0X2luZm8gJiYgIXNndF9pbmZvLT52YWxpZCAmJgogCQkgICAgICAgICFzZ3RfaW5mby0+bnVt X2ltcG9ydGVyczsKIAogCWlmIChmaW5hbF9yZWxlYXNlKSB7Ci0JCXJldCA9IGh5cGVyX2RtYWJ1 Zl9zeW5jX3JlcXVlc3RfYW5kX3dhaXQoc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCwKLQkJCQkJ CQlIWVBFUl9ETUFCVUZfT1BTX1JFTEVBU0VfRklOQUwpOworCQlyZXQgPSBoeXBlcl9kbWFidWZf c3luY19yZXF1ZXN0KHNndF9pbmZvLT5oeXBlcl9kbWFidWZfaWQsCisJCQkJCQlIWVBFUl9ETUFC VUZfT1BTX1JFTEVBU0VfRklOQUwpOwogCX0gZWxzZSB7Ci0JCXJldCA9IGh5cGVyX2RtYWJ1Zl9z eW5jX3JlcXVlc3RfYW5kX3dhaXQoc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCwKLQkJCQkJCQlI WVBFUl9ETUFCVUZfT1BTX1JFTEVBU0UpOworCQlyZXQgPSBoeXBlcl9kbWFidWZfc3luY19yZXF1 ZXN0KHNndF9pbmZvLT5oeXBlcl9kbWFidWZfaWQsCisJCQkJCQlIWVBFUl9ETUFCVUZfT1BTX1JF TEVBU0UpOwogCX0KIAogCWlmIChyZXQgPCAwKSB7CkBAIC00NTksOCArNDYwLDggQEAgc3RhdGlj IGludCBoeXBlcl9kbWFidWZfb3BzX2JlZ2luX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRt YWJ1ZiwgZW51bSBkbWFfZGEKIAogCXNndF9pbmZvID0gKHN0cnVjdCBoeXBlcl9kbWFidWZfaW1w b3J0ZWRfc2d0X2luZm8gKilkbWFidWYtPnByaXY7CiAKLQlyZXQgPSBoeXBlcl9kbWFidWZfc3lu Y19yZXF1ZXN0X2FuZF93YWl0KHNndF9pbmZvLT5oeXBlcl9kbWFidWZfaWQsCi0JCQkJCQlIWVBF Ul9ETUFCVUZfT1BTX0JFR0lOX0NQVV9BQ0NFU1MpOworCXJldCA9IGh5cGVyX2RtYWJ1Zl9zeW5j X3JlcXVlc3Qoc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCwKKwkJCQkJSFlQRVJfRE1BQlVGX09Q U19CRUdJTl9DUFVfQUNDRVNTKTsKIAlpZiAocmV0IDwgMCkgewogCQlkZXZfZXJyKGh5cGVyX2Rt YWJ1Zl9wcml2YXRlLmRldmljZSwKIAkJCSJoeXBlcl9kbWFidWY6OiVzIEVycm9yOnNlbmQgZG1h YnVmIHN5bmMgcmVxdWVzdCBmYWlsZWRcbiIsIF9fZnVuY19fKTsKQEAgLTQ3OSw4ICs0ODAsOCBA QCBzdGF0aWMgaW50IGh5cGVyX2RtYWJ1Zl9vcHNfZW5kX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9i dWYgKmRtYWJ1ZiwgZW51bSBkbWFfZGF0YQogCiAJc2d0X2luZm8gPSAoc3RydWN0IGh5cGVyX2Rt YWJ1Zl9pbXBvcnRlZF9zZ3RfaW5mbyAqKWRtYWJ1Zi0+cHJpdjsKIAotCXJldCA9IGh5cGVyX2Rt YWJ1Zl9zeW5jX3JlcXVlc3RfYW5kX3dhaXQoc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCwKLQkJ CQkJCUhZUEVSX0RNQUJVRl9PUFNfRU5EX0NQVV9BQ0NFU1MpOworCXJldCA9IGh5cGVyX2RtYWJ1 Zl9zeW5jX3JlcXVlc3Qoc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCwKKwkJCQkJSFlQRVJfRE1B QlVGX09QU19FTkRfQ1BVX0FDQ0VTUyk7CiAJaWYgKHJldCA8IDApIHsKIAkJZGV2X2VycihoeXBl cl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCiAJCQkiaHlwZXJfZG1hYnVmOjolcyBFcnJvcjpzZW5k IGRtYWJ1ZiBzeW5jIHJlcXVlc3QgZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CkBAIC00OTksOCArNTAw LDggQEAgc3RhdGljIHZvaWQgKmh5cGVyX2RtYWJ1Zl9vcHNfa21hcF9hdG9taWMoc3RydWN0IGRt YV9idWYgKmRtYWJ1ZiwgdW5zaWduZWQgbG9uZwogCiAJc2d0X2luZm8gPSAoc3RydWN0IGh5cGVy X2RtYWJ1Zl9pbXBvcnRlZF9zZ3RfaW5mbyAqKWRtYWJ1Zi0+cHJpdjsKIAotCXJldCA9IGh5cGVy X2RtYWJ1Zl9zeW5jX3JlcXVlc3RfYW5kX3dhaXQoc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCwK LQkJCQkJCUhZUEVSX0RNQUJVRl9PUFNfS01BUF9BVE9NSUMpOworCXJldCA9IGh5cGVyX2RtYWJ1 Zl9zeW5jX3JlcXVlc3Qoc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCwKKwkJCQkJSFlQRVJfRE1B QlVGX09QU19LTUFQX0FUT01JQyk7CiAJaWYgKHJldCA8IDApIHsKIAkJZGV2X2VycihoeXBlcl9k bWFidWZfcHJpdmF0ZS5kZXZpY2UsCiAJCQkiaHlwZXJfZG1hYnVmOjolcyBFcnJvcjpzZW5kIGRt YWJ1ZiBzeW5jIHJlcXVlc3QgZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CkBAIC01MTksOCArNTIwLDgg QEAgc3RhdGljIHZvaWQgaHlwZXJfZG1hYnVmX29wc19rdW5tYXBfYXRvbWljKHN0cnVjdCBkbWFf YnVmICpkbWFidWYsIHVuc2lnbmVkIGxvbmcKIAogCXNndF9pbmZvID0gKHN0cnVjdCBoeXBlcl9k bWFidWZfaW1wb3J0ZWRfc2d0X2luZm8gKilkbWFidWYtPnByaXY7CiAKLQlyZXQgPSBoeXBlcl9k bWFidWZfc3luY19yZXF1ZXN0X2FuZF93YWl0KHNndF9pbmZvLT5oeXBlcl9kbWFidWZfaWQsCi0J CQkJCQlIWVBFUl9ETUFCVUZfT1BTX0tVTk1BUF9BVE9NSUMpOworCXJldCA9IGh5cGVyX2RtYWJ1 Zl9zeW5jX3JlcXVlc3Qoc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9pZCwKKwkJCQkJSFlQRVJfRE1B QlVGX09QU19LVU5NQVBfQVRPTUlDKTsKIAlpZiAocmV0IDwgMCkgewogCQlkZXZfZXJyKGh5cGVy X2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKIAkJCSJoeXBlcl9kbWFidWY6OiVzIEVycm9yOnNlbmQg ZG1hYnVmIHN5bmMgcmVxdWVzdCBmYWlsZWRcbiIsIF9fZnVuY19fKTsKQEAgLTUzNyw4ICs1Mzgs OCBAQCBzdGF0aWMgdm9pZCAqaHlwZXJfZG1hYnVmX29wc19rbWFwKHN0cnVjdCBkbWFfYnVmICpk bWFidWYsIHVuc2lnbmVkIGxvbmcgcGdudW0pCiAKIAlzZ3RfaW5mbyA9IChzdHJ1Y3QgaHlwZXJf ZG1hYnVmX2ltcG9ydGVkX3NndF9pbmZvICopZG1hYnVmLT5wcml2OwogCi0JcmV0ID0gaHlwZXJf ZG1hYnVmX3N5bmNfcmVxdWVzdF9hbmRfd2FpdChzZ3RfaW5mby0+aHlwZXJfZG1hYnVmX2lkLAot CQkJCQkJSFlQRVJfRE1BQlVGX09QU19LTUFQKTsKKwlyZXQgPSBoeXBlcl9kbWFidWZfc3luY19y ZXF1ZXN0KHNndF9pbmZvLT5oeXBlcl9kbWFidWZfaWQsCisJCQkJCUhZUEVSX0RNQUJVRl9PUFNf S01BUCk7CiAJaWYgKHJldCA8IDApIHsKIAkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5k ZXZpY2UsCiAJCQkiaHlwZXJfZG1hYnVmOjolcyBFcnJvcjpzZW5kIGRtYWJ1ZiBzeW5jIHJlcXVl c3QgZmFpbGVkXG4iLCBfX2Z1bmNfXyk7CkBAIC01NTcsOCArNTU4LDggQEAgc3RhdGljIHZvaWQg aHlwZXJfZG1hYnVmX29wc19rdW5tYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwgdW5zaWduZWQg bG9uZyBwZ251bSwKIAogCXNndF9pbmZvID0gKHN0cnVjdCBoeXBlcl9kbWFidWZfaW1wb3J0ZWRf c2d0X2luZm8gKilkbWFidWYtPnByaXY7CiAKLQlyZXQgPSBoeXBlcl9kbWFidWZfc3luY19yZXF1 ZXN0X2FuZF93YWl0KHNndF9pbmZvLT5oeXBlcl9kbWFidWZfaWQsCi0JCQkJCQlIWVBFUl9ETUFC VUZfT1BTX0tVTk1BUCk7CisJcmV0ID0gaHlwZXJfZG1hYnVmX3N5bmNfcmVxdWVzdChzZ3RfaW5m by0+aHlwZXJfZG1hYnVmX2lkLAorCQkJCQlIWVBFUl9ETUFCVUZfT1BTX0tVTk1BUCk7CiAJaWYg KHJldCA8IDApIHsKIAkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCiAJCQki aHlwZXJfZG1hYnVmOjolcyBFcnJvcjpzZW5kIGRtYWJ1ZiBzeW5jIHJlcXVlc3QgZmFpbGVkXG4i LCBfX2Z1bmNfXyk7CkBAIC01NzUsOCArNTc2LDggQEAgc3RhdGljIGludCBoeXBlcl9kbWFidWZf b3BzX21tYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICoK IAogCXNndF9pbmZvID0gKHN0cnVjdCBoeXBlcl9kbWFidWZfaW1wb3J0ZWRfc2d0X2luZm8gKilk bWFidWYtPnByaXY7CiAKLQlyZXQgPSBoeXBlcl9kbWFidWZfc3luY19yZXF1ZXN0X2FuZF93YWl0 KHNndF9pbmZvLT5oeXBlcl9kbWFidWZfaWQsCi0JCQkJCQlIWVBFUl9ETUFCVUZfT1BTX01NQVAp OworCXJldCA9IGh5cGVyX2RtYWJ1Zl9zeW5jX3JlcXVlc3Qoc2d0X2luZm8tPmh5cGVyX2RtYWJ1 Zl9pZCwKKwkJCQkJSFlQRVJfRE1BQlVGX09QU19NTUFQKTsKIAlpZiAocmV0IDwgMCkgewogCQlk ZXZfZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwKIAkJCSJoeXBlcl9kbWFidWY6OiVz IEVycm9yOnNlbmQgZG1hYnVmIHN5bmMgcmVxdWVzdCBmYWlsZWRcbiIsIF9fZnVuY19fKTsKQEAg LTU5NSw4ICs1OTYsOCBAQCBzdGF0aWMgdm9pZCAqaHlwZXJfZG1hYnVmX29wc192bWFwKHN0cnVj dCBkbWFfYnVmICpkbWFidWYpCiAKIAlzZ3RfaW5mbyA9IChzdHJ1Y3QgaHlwZXJfZG1hYnVmX2lt cG9ydGVkX3NndF9pbmZvICopZG1hYnVmLT5wcml2OwogCi0JcmV0ID0gaHlwZXJfZG1hYnVmX3N5 bmNfcmVxdWVzdF9hbmRfd2FpdChzZ3RfaW5mby0+aHlwZXJfZG1hYnVmX2lkLAotCQkJCQkJSFlQ RVJfRE1BQlVGX09QU19WTUFQKTsKKwlyZXQgPSBoeXBlcl9kbWFidWZfc3luY19yZXF1ZXN0KHNn dF9pbmZvLT5oeXBlcl9kbWFidWZfaWQsCisJCQkJCUhZUEVSX0RNQUJVRl9PUFNfVk1BUCk7CiAJ aWYgKHJldCA8IDApIHsKIAkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCiAJ CQkiaHlwZXJfZG1hYnVmOjolcyBFcnJvcjpzZW5kIGRtYWJ1ZiBzeW5jIHJlcXVlc3QgZmFpbGVk XG4iLCBfX2Z1bmNfXyk7CkBAIC02MTUsOCArNjE2LDggQEAgc3RhdGljIHZvaWQgaHlwZXJfZG1h YnVmX29wc192dW5tYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgdm9pZCAqdmFkZHIpCiAKIAlz Z3RfaW5mbyA9IChzdHJ1Y3QgaHlwZXJfZG1hYnVmX2ltcG9ydGVkX3NndF9pbmZvICopZG1hYnVm LT5wcml2OwogCi0JcmV0ID0gaHlwZXJfZG1hYnVmX3N5bmNfcmVxdWVzdF9hbmRfd2FpdChzZ3Rf aW5mby0+aHlwZXJfZG1hYnVmX2lkLAotCQkJCQkJSFlQRVJfRE1BQlVGX09QU19WVU5NQVApOwor CXJldCA9IGh5cGVyX2RtYWJ1Zl9zeW5jX3JlcXVlc3Qoc2d0X2luZm8tPmh5cGVyX2RtYWJ1Zl9p ZCwKKwkJCQkJSFlQRVJfRE1BQlVGX09QU19WVU5NQVApOwogCWlmIChyZXQgPCAwKSB7CiAJCWRl dl9lcnIoaHlwZXJfZG1hYnVmX3ByaXZhdGUuZGV2aWNlLAogCQkJImh5cGVyX2RtYWJ1Zjo6JXMg RXJyb3I6c2VuZCBkbWFidWYgc3luYyByZXF1ZXN0IGZhaWxlZFxuIiwgX19mdW5jX18pOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9tc2cuYyBiL2Ry aXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfbXNnLmMKaW5kZXggYjliZDZkOC4u Yzk5MTc2YWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFi dWZfbXNnLmMKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1Zl9tc2cu YwpAQCAtMzksOCArMzksNiBAQAogI2luY2x1ZGUgImh5cGVyX2RtYWJ1Zl9yZW1vdGVfc3luYy5o IgogI2luY2x1ZGUgImh5cGVyX2RtYWJ1Zl9saXN0LmgiCiAKLSNkZWZpbmUgRk9SQ0VEX1VORVhQ T1JUSU5HIDAKLQogZXh0ZXJuIHN0cnVjdCBoeXBlcl9kbWFidWZfcHJpdmF0ZSBoeXBlcl9kbWFi dWZfcHJpdmF0ZTsKIAogc3RydWN0IGNtZF9wcm9jZXNzIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv eGVuL2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfcmVtb3RlX3N5bmMuYyBiL2RyaXZlcnMveGVu L2h5cGVyX2RtYWJ1Zi9oeXBlcl9kbWFidWZfcmVtb3RlX3N5bmMuYwppbmRleCA0YzI4ZjExLi5m OTNjOTM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYvaHlwZXJfZG1hYnVm X3JlbW90ZV9zeW5jLmMKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL2h5cGVyX2RtYWJ1 Zl9yZW1vdGVfc3luYy5jCkBAIC01Myw3ICs1Myw3IEBAIGV4dGVybiBzdHJ1Y3QgaHlwZXJfZG1h YnVmX3ByaXZhdGUgaHlwZXJfZG1hYnVmX3ByaXZhdGU7CiAgKiBsYXRlciB3aGVuIHVubWFwcGlu ZyBvcGVyYXRpb25zIGFyZSBpbnZva2VkIHRvIGZyZWUgdGhvc2UuCiAgKgogICogVGhlIHZlcnkg Zmlyc3QgZWxlbWVudCBvbiB0aGUgYm90dG9tIG9mIGVhY2ggc3RhY2sgaG9sZHMKLSAqIGFyZSB3 aGF0IGlzIGNyZWF0ZWQgd2hlbiBpbml0aWFsIGV4cG9ydGluZyBpcyBpc3N1ZWQgc28gaXQKKyAq IGlzIHdoYXQgaXMgY3JlYXRlZCB3aGVuIGluaXRpYWwgZXhwb3J0aW5nIGlzIGlzc3VlZCBzbyBp dAogICogc2hvdWxkIG5vdCBiZSBtb2RpZmllZCBvciByZWxlYXNlZCBieSB0aGlzIGZ1Y3Rpb24u CiAgKi8KIGludCBoeXBlcl9kbWFidWZfcmVtb3RlX3N5bmMoaW50IGlkLCBpbnQgb3BzKQpkaWZm IC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2Nv bW0uYyBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9jb21t LmMKaW5kZXggMTQzMzZjOS4uYmE2YjEyNiAxMDA2NDQKLS0tIGEvZHJpdmVycy94ZW4vaHlwZXJf ZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2NvbW0uYworKysgYi9kcml2ZXJzL3hlbi9oeXBl cl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5fY29tbS5jCkBAIC01Myw3ICs1Myw3IEBAIHN0 YXRpYyBpbnQgeGVuX2NvbW1fc2V0dXBfZGF0YV9kaXIodm9pZCkKIHsKIAljaGFyIGJ1ZlsyNTVd OwogCi0Jc3ByaW50ZihidWYsICIvbG9jYWwvZG9tYWluLyVkL2RhdGEvaHlwZXJfZG1hYnVmIiwg aHlwZXJfZG1hYnVmX2dldF9kb21pZCgpKTsKKwlzcHJpbnRmKGJ1ZiwgIi9sb2NhbC9kb21haW4v JWQvZGF0YS9oeXBlcl9kbWFidWYiLCBoeXBlcl9kbWFidWZfeGVuX2dldF9kb21pZCgpKTsKIAly ZXR1cm4geGVuYnVzX21rZGlyKFhCVF9OSUwsIGJ1ZiwgIiIpOwogfQogCkBAIC02Nyw3ICs2Nyw3 IEBAIHN0YXRpYyBpbnQgeGVuX2NvbW1fZGVzdHJveV9kYXRhX2Rpcih2b2lkKQogewogCWNoYXIg YnVmWzI1NV07CiAKLQlzcHJpbnRmKGJ1ZiwgIi9sb2NhbC9kb21haW4vJWQvZGF0YS9oeXBlcl9k bWFidWYiLCBoeXBlcl9kbWFidWZfZ2V0X2RvbWlkKCkpOworCXNwcmludGYoYnVmLCAiL2xvY2Fs L2RvbWFpbi8lZC9kYXRhL2h5cGVyX2RtYWJ1ZiIsIGh5cGVyX2RtYWJ1Zl94ZW5fZ2V0X2RvbWlk KCkpOwogCXJldHVybiB4ZW5idXNfcm0oWEJUX05JTCwgYnVmLCAiIik7CiB9CiAKQEAgLTEzMCw3 ICsxMzAsNyBAQCBzdGF0aWMgaW50IHhlbl9jb21tX2dldF9yaW5nX2RldGFpbHMoaW50IGRvbWlk LCBpbnQgcmRvbWlkLCBpbnQgKmdyZWZpZCwgaW50ICpwbwogCXJldHVybiAocmV0IDw9IDAgPyAx IDogMCk7CiB9CiAKLWludCBoeXBlcl9kbWFidWZfZ2V0X2RvbWlkKHZvaWQpCitpbnQgaHlwZXJf ZG1hYnVmX3hlbl9nZXRfZG9taWQodm9pZCkKIHsKIAlzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9u IHhidDsKIAlpbnQgZG9taWQ7CkBAIC0xOTIsNyArMTkyLDcgQEAgc3RhdGljIHZvaWQgcmVtb3Rl X2RvbV9leHBvcnRlcl93YXRjaF9jYihzdHJ1Y3QgeGVuYnVzX3dhdGNoICp3YXRjaCwKIAkgKiBp dCBtZWFucyB0aGF0IHJlbW90ZSBkb21haW4gaGFzIHNldHVwIGl0IGZvciB1cyBhbmQgd2Ugc2hv dWxkIGNvbm5lY3QKIAkgKiB0byBpdC4KIAkgKi8KLQlyZXQgPSB4ZW5fY29tbV9nZXRfcmluZ19k ZXRhaWxzKGh5cGVyX2RtYWJ1Zl9nZXRfZG9taWQoKSwgcmRvbSwKKwlyZXQgPSB4ZW5fY29tbV9n ZXRfcmluZ19kZXRhaWxzKGh5cGVyX2RtYWJ1Zl94ZW5fZ2V0X2RvbWlkKCksIHJkb20sCiAJCQkJ CSZncmVmaWQsICZwb3J0KTsKIAogCWlmIChyaW5nX2luZm8gJiYgcmV0ICE9IDApIHsKQEAgLTI4 Nyw3ICsyODcsNyBAQCBpbnQgaHlwZXJfZG1hYnVmX3hlbl9pbml0X3R4X3JidWYoaW50IGRvbWlk KQogCiAJcmV0ID0geGVuX2NvbW1fYWRkX3R4X3JpbmcocmluZ19pbmZvKTsKIAotCXJldCA9IHhl bl9jb21tX2V4cG9zZV9yaW5nX2RldGFpbHMoaHlwZXJfZG1hYnVmX2dldF9kb21pZCgpLCBkb21p ZCwKKwlyZXQgPSB4ZW5fY29tbV9leHBvc2VfcmluZ19kZXRhaWxzKGh5cGVyX2RtYWJ1Zl94ZW5f Z2V0X2RvbWlkKCksIGRvbWlkLAogCQkJCQkgICByaW5nX2luZm8tPmdyZWZfcmluZywgcmluZ19p bmZvLT5wb3J0KTsKIAogCS8qCkBAIC0yOTksNyArMjk5LDcgQEAgaW50IGh5cGVyX2RtYWJ1Zl94 ZW5faW5pdF90eF9yYnVmKGludCBkb21pZCkKIAlyaW5nX2luZm8tPndhdGNoLm5vZGUgPSAoY29u c3QgY2hhciopIGttYWxsb2Moc2l6ZW9mKGNoYXIpICogMjU1LCBHRlBfS0VSTkVMKTsKIAlzcHJp bnRmKChjaGFyKilyaW5nX2luZm8tPndhdGNoLm5vZGUsCiAJCSIvbG9jYWwvZG9tYWluLyVkL2Rh dGEvaHlwZXJfZG1hYnVmLyVkL3BvcnQiLAotCQlkb21pZCwgaHlwZXJfZG1hYnVmX2dldF9kb21p ZCgpKTsKKwkJZG9taWQsIGh5cGVyX2RtYWJ1Zl94ZW5fZ2V0X2RvbWlkKCkpOwogCiAJcmVnaXN0 ZXJfeGVuYnVzX3dhdGNoKCZyaW5nX2luZm8tPndhdGNoKTsKIApAQCAtMzY4LDcgKzM2OCw3IEBA IGludCBoeXBlcl9kbWFidWZfeGVuX2luaXRfcnhfcmJ1ZihpbnQgZG9taWQpCiAJCXJldHVybiAw OwogCX0KIAotCXJldCA9IHhlbl9jb21tX2dldF9yaW5nX2RldGFpbHMoaHlwZXJfZG1hYnVmX2dl dF9kb21pZCgpLCBkb21pZCwKKwlyZXQgPSB4ZW5fY29tbV9nZXRfcmluZ19kZXRhaWxzKGh5cGVy X2RtYWJ1Zl94ZW5fZ2V0X2RvbWlkKCksIGRvbWlkLAogCQkJCQkmcnhfZ3JlZiwgJnJ4X3BvcnQp OwogCiAJaWYgKHJldCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL3hl bi9oeXBlcl9kbWFidWZfeGVuX2NvbW0uaCBiL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4v aHlwZXJfZG1hYnVmX3hlbl9jb21tLmgKaW5kZXggMjk4YWYwOC4uOWM5MzE2NSAxMDA2NDQKLS0t IGEvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBlcl9kbWFidWZfeGVuX2NvbW0uaAor KysgYi9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYveGVuL2h5cGVyX2RtYWJ1Zl94ZW5fY29tbS5o CkBAIC01MCw3ICs1MCw3IEBAIHN0cnVjdCB4ZW5fY29tbV9yeF9yaW5nX2luZm8gewogCXN0cnVj dCBnbnR0YWJfdW5tYXBfZ3JhbnRfcmVmIHVubWFwX29wOwogfTsKIAotaW50IGh5cGVyX2RtYWJ1 Zl9nZXRfZG9taWQodm9pZCk7CitpbnQgaHlwZXJfZG1hYnVmX3hlbl9nZXRfZG9taWQodm9pZCk7 CiAKIGludCBoeXBlcl9kbWFidWZfeGVuX2luaXRfY29tbV9lbnYodm9pZCk7CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9kcnYuYyBi L2RyaXZlcnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9kcnYuYwppbmRl eCA2YWZiNTIwLi5hYTRjMmY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYv eGVuL2h5cGVyX2RtYWJ1Zl94ZW5fZHJ2LmMKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVm L3hlbi9oeXBlcl9kbWFidWZfeGVuX2Rydi5jCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAi aHlwZXJfZG1hYnVmX3hlbl9zaG0uaCIKIAogc3RydWN0IGh5cGVyX2RtYWJ1Zl9iYWNrZW5kX29w cyB4ZW5fYmFja2VuZF9vcHMgPSB7Ci0JLmdldF92bV9pZCA9IGh5cGVyX2RtYWJ1Zl9nZXRfZG9t aWQsCisJLmdldF92bV9pZCA9IGh5cGVyX2RtYWJ1Zl94ZW5fZ2V0X2RvbWlkLAogCS5zaGFyZV9w YWdlcyA9IGh5cGVyX2RtYWJ1Zl94ZW5fc2hhcmVfcGFnZXMsCiAJLnVuc2hhcmVfcGFnZXMgPSBo eXBlcl9kbWFidWZfeGVuX3Vuc2hhcmVfcGFnZXMsCiAJLm1hcF9zaGFyZWRfcGFnZXMgPSAodm9p ZCAqKWh5cGVyX2RtYWJ1Zl94ZW5fbWFwX3NoYXJlZF9wYWdlcywKZGlmZiAtLWdpdCBhL2RyaXZl cnMveGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9zaG0uYyBiL2RyaXZlcnMv eGVuL2h5cGVyX2RtYWJ1Zi94ZW4vaHlwZXJfZG1hYnVmX3hlbl9zaG0uYwppbmRleCAxMjJhYWMx Li5iMTU4YzExIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9oeXBlcl9kbWFidWYveGVuL2h5cGVy X2RtYWJ1Zl94ZW5fc2htLmMKKysrIGIvZHJpdmVycy94ZW4vaHlwZXJfZG1hYnVmL3hlbi9oeXBl cl9kbWFidWZfeGVuX3NobS5jCkBAIC0xMDgsOCArMTA4LDggQEAgaW50IGh5cGVyX2RtYWJ1Zl94 ZW5fc2hhcmVfcGFnZXMoc3RydWN0IHBhZ2UgKipwYWdlcywgaW50IGRvbWlkLCBpbnQgbmVudHMs CiAJLyogU2hhcmUgMm5kIGxldmVsIGFkZHJlc3NpbmcgcGFnZXMgaW4gcmVhZG9ubHkgbW9kZSov CiAJZm9yIChpPTA7IGk8IG5fbHZsMl9ncmVmczsgaSsrKSB7CiAJCWx2bDNfdGFibGVbaV0gPSBn bnR0YWJfZ3JhbnRfZm9yZWlnbl9hY2Nlc3MoZG9taWQsCi0JCQkJCQkJICAgdmlydF90b19tZm4o KHVuc2lnbmVkIGxvbmcpbHZsMl90YWJsZStpKlBBR0VfU0laRSApLAotCQkJCQkJCSAgIDEpOwor CQkJCQkJCSAgICB2aXJ0X3RvX21mbigodW5zaWduZWQgbG9uZylsdmwyX3RhYmxlK2kqUEFHRV9T SVpFICksCisJCQkJCQkJICAgIDEpOwogCX0KIAogCS8qIFNoYXJlIGx2bDNfdGFibGUgaW4gcmVh ZG9ubHkgbW9kZSovCkBAIC0yNDAsMTAgKzI0MCwxMiBAQCBzdHJ1Y3QgcGFnZSAqKiBoeXBlcl9k bWFidWZfeGVuX21hcF9zaGFyZWRfcGFnZXMoaW50IGx2bDNfZ3JlZiwgaW50IGRvbWlkLCBpbnQg bgogCiAJbHZsM190YWJsZSA9IChncmFudF9yZWZfdCAqKXBmbl90b19rYWRkcihwYWdlX3RvX3Bm bihsdmwzX3RhYmxlX3BhZ2UpKTsKIAotCWdudHRhYl9zZXRfbWFwX29wKCZsdmwzX21hcF9vcHMs ICh1bnNpZ25lZCBsb25nKWx2bDNfdGFibGUsIEdOVE1BUF9ob3N0X21hcCB8IEdOVE1BUF9yZWFk b25seSwKKwlnbnR0YWJfc2V0X21hcF9vcCgmbHZsM19tYXBfb3BzLCAodW5zaWduZWQgbG9uZyls dmwzX3RhYmxlLAorCQkJICBHTlRNQVBfaG9zdF9tYXAgfCBHTlRNQVBfcmVhZG9ubHksCiAJCQkg IChncmFudF9yZWZfdClsdmwzX2dyZWYsIGRvbWlkKTsKIAotCWdudHRhYl9zZXRfdW5tYXBfb3Ao Jmx2bDNfdW5tYXBfb3BzLCAodW5zaWduZWQgbG9uZylsdmwzX3RhYmxlLCBHTlRNQVBfaG9zdF9t YXAgfCBHTlRNQVBfcmVhZG9ubHksIC0xKTsKKwlnbnR0YWJfc2V0X3VubWFwX29wKCZsdmwzX3Vu bWFwX29wcywgKHVuc2lnbmVkIGxvbmcpbHZsM190YWJsZSwKKwkJCSAgICBHTlRNQVBfaG9zdF9t YXAgfCBHTlRNQVBfcmVhZG9ubHksIC0xKTsKIAogCWlmIChnbnR0YWJfbWFwX3JlZnMoJmx2bDNf bWFwX29wcywgTlVMTCwgJmx2bDNfdGFibGVfcGFnZSwgMSkpIHsKIAkJZGV2X2VycihoeXBlcl9k bWFidWZfcHJpdmF0ZS5kZXZpY2UsICJIWVBFUlZJU09SIG1hcCBncmFudCByZWYgZmFpbGVkIik7 CkBAIC0yODUsOCArMjg3LDkgQEAgc3RydWN0IHBhZ2UgKiogaHlwZXJfZG1hYnVmX3hlbl9tYXBf c2hhcmVkX3BhZ2VzKGludCBsdmwzX2dyZWYsIGludCBkb21pZCwgaW50IG4KIAkvKiBDaGVja3Mg aWYgcGFnZXMgd2VyZSBtYXBwZWQgY29ycmVjdGx5ICovCiAJZm9yIChpID0gMDsgaSA8IG5fbHZs Ml9ncmVmczsgaSsrKSB7CiAJCWlmIChsdmwyX21hcF9vcHNbaV0uc3RhdHVzKSB7Ci0JCQlkZXZf ZXJyKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIkhZUEVSVklTT1IgbWFwIGdyYW50IHJl ZiBmYWlsZWQgc3RhdHVzID0gJWQiLAotCQkJICAgICAgIGx2bDJfbWFwX29wc1tpXS5zdGF0dXMp OworCQkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCisJCQkJIkhZUEVSVklT T1IgbWFwIGdyYW50IHJlZiBmYWlsZWQgc3RhdHVzID0gJWQiLAorCQkJCWx2bDJfbWFwX29wc1tp XS5zdGF0dXMpOwogCQkJcmV0dXJuIE5VTEw7CiAJCX0gZWxzZSB7CiAJCQlsdmwyX3VubWFwX29w c1tpXS5oYW5kbGUgPSBsdmwyX21hcF9vcHNbaV0uaGFuZGxlOwpAQCAtMzQ0LDcgKzM0Nyw4IEBA IHN0cnVjdCBwYWdlICoqIGh5cGVyX2RtYWJ1Zl94ZW5fbWFwX3NoYXJlZF9wYWdlcyhpbnQgbHZs M19ncmVmLCBpbnQgZG9taWQsIGludCBuCiAKIAlmb3IgKGkgPSAwOyBpIDwgbmVudHM7IGkrKykg ewogCQlpZiAoZGF0YV9tYXBfb3BzW2ldLnN0YXR1cykgewotCQkJZGV2X2VycihoeXBlcl9kbWFi dWZfcHJpdmF0ZS5kZXZpY2UsICJIWVBFUlZJU09SIG1hcCBncmFudCByZWYgZmFpbGVkIHN0YXR1 cyA9ICVkXG4iLAorCQkJZGV2X2VycihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCisJCQkJ IkhZUEVSVklTT1IgbWFwIGdyYW50IHJlZiBmYWlsZWQgc3RhdHVzID0gJWRcbiIsCiAJCQkJZGF0 YV9tYXBfb3BzW2ldLnN0YXR1cyk7CiAJCQlyZXR1cm4gTlVMTDsKIAkJfSBlbHNlIHsKQEAgLTM3 Niw3ICszODAsOCBAQCBpbnQgaHlwZXJfZG1hYnVmX3hlbl91bm1hcF9zaGFyZWRfcGFnZXModm9p ZCAqKnJlZnNfaW5mbywgaW50IG5lbnRzKSB7CiAKIAlpZiAoc2hfcGFnZXNfaW5mby0+dW5tYXBf b3BzID09IE5VTEwgfHwKIAkgICAgc2hfcGFnZXNfaW5mby0+ZGF0YV9wYWdlcyA9PSBOVUxMKSB7 Ci0JCWRldl93YXJuKGh5cGVyX2RtYWJ1Zl9wcml2YXRlLmRldmljZSwgIkltcG9ydGVkIHBhZ2Vz IGFscmVhZHkgY2xlYW5lZCB1cCBvciBidWZmZXIgd2FzIG5vdCBpbXBvcnRlZCB5ZXRcbiIpOwor CQlkZXZfd2FybihoeXBlcl9kbWFidWZfcHJpdmF0ZS5kZXZpY2UsCisJCQkgIkltcG9ydGVkIHBh Z2VzIGFscmVhZHkgY2xlYW5lZCB1cCBvciBidWZmZXIgd2FzIG5vdCBpbXBvcnRlZCB5ZXRcbiIp OwogCQlyZXR1cm4gMDsKIAl9CiAKLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu L2xpc3RpbmZvL3hlbi1kZXZlbA==