From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [RFC 02/10] drm/i915: Extend CREATE_CONTEXT to allow inheritance ala clone() Date: Thu, 25 Jan 2018 13:33:25 +0000 Message-ID: <20180125133333.13425-3-tvrtko.ursulin@linux.intel.com> References: <20180125133333.13425-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr0-x243.google.com (mail-wr0-x243.google.com [IPv6:2a00:1450:400c:c0c::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id E2B096E0A1 for ; Thu, 25 Jan 2018 13:33:45 +0000 (UTC) Received: by mail-wr0-x243.google.com with SMTP id 16so7675751wry.12 for ; Thu, 25 Jan 2018 05:33:45 -0800 (PST) In-Reply-To: <20180125133333.13425-1-tvrtko.ursulin@linux.intel.com> 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 RnJvbTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CgpBIGNvbnRleHQg ZW5jb21wYXNzZXMgdGhlIGRyaXZlcidzIHZpZXcgb2YgcHJvY2VzcyByZWxhdGVkIHN0YXRlLCBh bmQKZW5jYXBzdWxhdGVzIHRoZSBsb2dpY2FsIEdQVSBzdGF0ZSB3aGVyZSBhdmFpbGFibGUuIEVh Y2ggY29udGV4dCBpcwpjdXJyZW50bHkgZXF1aXZhbGVudCB0byBhIHByb2Nlc3MgaW4gQ1BVIHRl cm1zLiBMaWtlIHdpdGggcHJvY2Vzc2VzLApzb21ldGltZXMgdGhlIHVzZXIgd2FudHMgYSBsaWdo dGVyIGVuY2Fwc3VsYXRpb24gdGhhdCBzaGFyZXMgc29tZSBzdGF0ZQp3aXRoIHRoZSBwYXJlbnQg cHJvY2VzcywgZm9yIGV4YW1wbGUgdHdvIHRocmVhZHMgaGF2ZSB1bmlxdWUgcmVnaXN0ZXIKc3Rh dGUgYnV0IHNoYXJlIHRoZSB2aXJ0dWFsIG1lbW9yeSBtYXBwaW5ncy4gV2UgY2FuIHN1cHBvcnQg ZXhhY3RseSB0aGUKc2FtZSBwcmluY2lwbGUgdXNpbmcgY29udGV4dHMgd2hlcmUgd2UgbWF5IHNo YXJlIHRoZSBHVFQgYnV0IGtlZXAgdGhlCmxvZ2ljYWwgR1BVIHN0YXRlIGRpc3RpbmN0LiBUaGlz IGFsbG93cyBxdWlja2VyIHN3aXRjaGluZyBiZXR3ZWVuIHRob3NlCmNvbnRleHRzLCBhbmQgZm9y IHVzZXJzcGFjZSB0byBhbGxvY2F0ZSBhIHNpbmdsZSBvZmZzZXQgaW4gdGhlIEdUVCBhbmQKdXNl IGl0IGFjcm9zcyBtdWx0aXBsZSBjb250ZXh0cy4gTGlrZSB3aXRoIGNsb25lKCksIGluIHRoZSBm dXR1cmUgd2UgbWF5Cndpc2ggdG8gYWxsb3cgdXNlcnNwYWNlIHRvIHNlbGVjdCBtb3JlIGZlYXR1 cmVzIHRvIGNvcHkgYWNyb3NzIGZyb20gdGhlCnBhcmVudCwgYnV0IGZvciBub3cgd2Ugb25seSBh bGxvdyBzaGFyaW5nIG9mIHRoZSBHVFQuCgpOb3RlIHRoYXQgaWYgZnVsbCBwZXItcHJvY2VzcyBH VFQgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGUgaGFyZGVyLCB0aGUKR1RUIGFyZSBhbHJlYWR5IGlt cGxpY2l0bHkgc2hhcmVkIGJldHdlZW4gY29udGV4dHMsIGFuZCB0aGlzIHJlcXVlc3QKdG8gY3Jl YXRlIGNvbnRleHRzIHdpdGggc2hhcmVkIEdUVCBmYWlscy4gV2l0aCBmdWxsIHBwR1RULCBldmVy eSBmZAooaS5lLiBldmVyeSBwcm9jZXNzKSBpcyBhbGxvY2F0ZWQgYSB1bmlxdWUgR1RUIHNvIHRo aXMgcmVxdWVzdCBjYW5ub3QgYmUKdXNlZCB0byBzaGFyZSBHVFQgYmV0d2VlbiBwcm9jZXNzZXMv ZmRzLCBpdCBjYW4gb25seSBzaGFyZSBHVFQgYmVsb25naW5nCnRvIHRoaXMgZmQuCgpUZXN0Y2Fz ZTogaWd0L2dlbV9jdHhfc2hhcmVkClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgpDYzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5A bGludXguaW50ZWwuY29tPgpDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVs LmNvbT4KQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgpD YzogTWljaGHFgiBXaW5pYXJza2kgPG1pY2hhbC53aW5pYXJza2lAaW50ZWwuY29tPgotLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICAgICAgICAgfCAgNjYgKysr Ky0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICAgICAgICAgICAgIHwg ICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCAgICAgICAgICAgICAg IHwgICAxIC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMgICAg ICAgfCAgIDEgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRl eHQuYyB8IDIzNiArKysrKysrKysrKysrKysrKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvaTkxNV9nZW1fZ3R0LmMgICAgIHwgICAxIC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYyAgICAgfCAgIDMgKy0KIGluY2x1ZGUvdWFwaS9kcm0v aTkxNV9kcm0uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKy0KIDggZmlsZXMgY2hhbmdl ZCwgMjQ3IGluc2VydGlvbnMoKyksIDc2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHQuYwppbmRleCBmNzIwNDZhZGFhY2UuLjIyYjBmYTE3MGZjZiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtMTA5LDYgKzEwOSw4IEBA IHN0YXRpYyB2b2lkIGx1dF9jbG9zZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQogCQlz dHJ1Y3QgaTkxNV92bWEgKnZtYSA9IHJjdV9kZXJlZmVyZW5jZV9yYXcoKnNsb3QpOwogCiAJCXJh ZGl4X3RyZWVfaXRlcl9kZWxldGUoJmN0eC0+aGFuZGxlc192bWEsICZpdGVyLCBzbG90KTsKKwor CQl2bWEtPm9wZW5fY291bnQtLTsKIAkJX19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV91bmxlc3Nf YWN0aXZlKHZtYS0+b2JqKTsKIAl9CiAJcmN1X3JlYWRfdW5sb2NrKCk7CkBAIC0yMDIsOCArMjA0 LDYgQEAgc3RhdGljIHZvaWQgY29udGV4dF9jbG9zZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4KQogCSAqIHRoZSBwcGd0dCkuCiAJICovCiAJbHV0X2Nsb3NlKGN0eCk7Ci0JaWYgKGN0eC0+ cHBndHQpCi0JCWk5MTVfcHBndHRfY2xvc2UoJmN0eC0+cHBndHQtPmJhc2UpOwogCiAJY3R4LT5m aWxlX3ByaXYgPSBFUlJfUFRSKC1FQkFERik7CiAJaTkxNV9nZW1fY29udGV4dF9wdXQoY3R4KTsK QEAgLTMzOSw2ICszMzksOSBAQCBzdGF0aWMgdm9pZCBfX2Rlc3Ryb3lfaHdfY29udGV4dChzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCWNvbnRleHRfY2xvc2UoY3R4KTsKIH0KIAorI2Rl ZmluZSBDUkVBVEVfVElNRUxJTkUgQklUKDApCisjZGVmaW5lIENSRUFURV9WTSBCSVQoMSkKKwog LyoqCiAgKiBUaGUgZGVmYXVsdCBjb250ZXh0IG5lZWRzIHRvIGV4aXN0IHBlciByaW5nIHRoYXQg dXNlcyBjb250ZXh0cy4gSXQgc3RvcmVzIHRoZQogICogY29udGV4dCBzdGF0ZSBvZiB0aGUgR1BV IGZvciBhcHBsaWNhdGlvbnMgdGhhdCBkb24ndCB1dGlsaXplIEhXIGNvbnRleHRzLCBhcwpAQCAt MzQ2LDcgKzM0OSw4IEBAIHN0YXRpYyB2b2lkIF9fZGVzdHJveV9od19jb250ZXh0KHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgsCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqCiBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCi0JCQlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYpCisJCQlz dHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYsCisJCQl1bnNpZ25lZCBpbnQg ZmxhZ3MpCiB7CiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKIApAQCAtMzU5LDcgKzM2 Myw3IEBAIGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAlpZiAoSVNfRVJSKGN0eCkpCiAJCXJldHVybiBjdHg7CiAKLQlpZiAoVVNFU19G VUxMX1BQR1RUKGRldl9wcml2KSkgeworCWlmIChmbGFncyAmIENSRUFURV9WTSAmJiBVU0VTX0ZV TExfUFBHVFQoZGV2X3ByaXYpKSB7CiAJCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dDsKIAog CQlwcGd0dCA9IGk5MTVfcHBndHRfY3JlYXRlKGRldl9wcml2LCBmaWxlX3ByaXYsIGN0eC0+bmFt ZSk7CkBAIC0zNzQsNyArMzc4LDcgQEAgaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQljdHgtPmRlc2NfdGVtcGxhdGUgPSBkZWZhdWx0 X2Rlc2NfdGVtcGxhdGUoZGV2X3ByaXYsIHBwZ3R0KTsKIAl9CiAKLQlpZiAoSEFTX0VYRUNMSVNU UyhkZXZfcHJpdikpIHsKKwlpZiAoZmxhZ3MgJiBDUkVBVEVfVElNRUxJTkUgJiYgSEFTX0VYRUNM SVNUUyhkZXZfcHJpdikpIHsKIAkJc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICp0aW1lbGluZTsK IAogCQl0aW1lbGluZSA9IGk5MTVfZ2VtX3RpbWVsaW5lX2NyZWF0ZShkZXZfcHJpdiwgY3R4LT5u YW1lKTsKQEAgLTQzNiw3ICs0NDAsNyBAQCBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9rZXJuZWwo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGludCBwcmlvKQogewogCXN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHg7CiAKLQljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1 LCBOVUxMKTsKKwljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBOVUxMLCBDUkVB VEVfVk0gfCBDUkVBVEVfVElNRUxJTkUpOwogCWlmIChJU19FUlIoY3R4KSkKIAkJcmV0dXJuIGN0 eDsKIApAQCAtNTU4LDcgKzU2Miw4IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X29wZW4oc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJaWRyX2luaXQoJmZpbGVfcHJpdi0+Y29udGV4dF9p ZHIpOwogCiAJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0JY3R4ID0gaTkx NV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZV9wcml2KTsKKwljdHggPSBpOTE1X2dlbV9j cmVhdGVfY29udGV4dChpOTE1LCBmaWxlX3ByaXYsCisJCQkJICAgICAgQ1JFQVRFX1ZNIHwgQ1JF QVRFX1RJTUVMSU5FKTsKIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwog CWlmIChJU19FUlIoY3R4KSkgewogCQlpZHJfZGVzdHJveSgmZmlsZV9wcml2LT5jb250ZXh0X2lk cik7CkBAIC02NTUsMTAgKzY2MCwxMiBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9jcmVhdGVfaW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCQkgIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRldik7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZSAqYXJncyA9IGRh dGE7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV92MiAqYXJncyA9IGRhdGE7 CiAJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2ID0gZmlsZS0+ZHJpdmVy X3ByaXY7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKnNoYXJlID0gTlVMTDsKIAlzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4OwotCWludCByZXQ7CisJdW5zaWduZWQgaW50IGZsYWdzID0g Q1JFQVRFX1ZNIHwgQ1JFQVRFX1RJTUVMSU5FOworCWludCBlcnI7CiAKIAlpZiAoIWRldl9wcml2 LT5lbmdpbmVbUkNTXS0+Y29udGV4dF9zaXplKQogCQlyZXR1cm4gLUVOT0RFVjsKQEAgLTY2Niw2 ICs2NzMsOSBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAoYXJncy0+cGFkICE9IDApCiAJCXJldHVybiAt RUlOVkFMOwogCisJaWYgKGFyZ3MtPmZsYWdzICYgfkk5MTVfR0VNX0NPTlRFWFRfU0hBUkVfR1RU KQorCQlyZXR1cm4gLUVJTlZBTDsKKwogCWlmIChjbGllbnRfaXNfYmFubmVkKGZpbGVfcHJpdikp IHsKIAkJRFJNX0RFQlVHKCJjbGllbnQgJXNbJWRdIGJhbm5lZCBmcm9tIGNyZWF0aW5nIGN0eFxu IiwKIAkJCSAgY3VycmVudC0+Y29tbSwKQEAgLTY3NCwyMSArNjg0LDQ1IEBAIGludCBpOTE1X2dl bV9jb250ZXh0X2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAogCQlyZXR1cm4gLUVJTzsKIAl9CiAKLQlyZXQgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0 aWJsZShkZXYpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJaWYgKGFyZ3MtPmZsYWdzICYg STkxNV9HRU1fQ09OVEVYVF9TSEFSRV9HVFQpIHsKKwkJc2hhcmUgPSBpOTE1X2dlbV9jb250ZXh0 X2xvb2t1cChmaWxlX3ByaXYsIGFyZ3MtPnNoYXJlX2N0eCk7CisJCWlmICghc2hhcmUpCisJCQly ZXR1cm4gLUVOT0VOVDsKKworCQlpZiAoIXNoYXJlLT5wcGd0dCkgeworCQkJZXJyID0gLUVOT0RF VjsKKwkJCWdvdG8gb3V0OworCQl9CiAKLQljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChk ZXZfcHJpdiwgZmlsZV9wcml2KTsKKwkJZmxhZ3MgJj0gfkNSRUFURV9WTTsKKwl9CisKKwllcnIg PSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZShkZXYpOworCWlmIChlcnIpCisJCWdvdG8g b3V0OworCisJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoZGV2X3ByaXYsIGZpbGVfcHJp diwgZmxhZ3MpOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCWlmIChJU19F UlIoY3R4KSkKLQkJcmV0dXJuIFBUUl9FUlIoY3R4KTsKKwlpZiAoSVNfRVJSKGN0eCkpIHsKKwkJ ZXJyID0gUFRSX0VSUihjdHgpOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAoIShmbGFncyAmIENS RUFURV9WTSkpIHsKKwkJaTkxNV9wcGd0dF9nZXQoc2hhcmUtPnBwZ3R0KTsKKwkJY3R4LT5wcGd0 dCA9IHNoYXJlLT5wcGd0dDsKKwkJY3R4LT5kZXNjX3RlbXBsYXRlID0gc2hhcmUtPmRlc2NfdGVt cGxhdGU7CisJfQogCiAJR0VNX0JVR19PTihpOTE1X2dlbV9jb250ZXh0X2lzX2tlcm5lbChjdHgp KTsKIAogCWFyZ3MtPmN0eF9pZCA9IGN0eC0+dXNlcl9oYW5kbGU7CiAJRFJNX0RFQlVHKCJIVyBj b250ZXh0ICVkIGNyZWF0ZWRcbiIsIGFyZ3MtPmN0eF9pZCk7CiAKLQlyZXR1cm4gMDsKK291dDoK KwlpZiAoc2hhcmUpCisJCWk5MTVfZ2VtX2NvbnRleHRfcHV0KHNoYXJlKTsKKwlyZXR1cm4gZXJy OwogfQogCiBpbnQgaTkxNV9nZW1fY29udGV4dF9kZXN0cm95X2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4 IGIzNTViYTFlZWUyMi4uM2IwOTI3ODEzNmNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYwpAQCAtMjIyMiw3ICsyMjIyLDcgQEAgaTkxNV9wcGd0dF9jcmVhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXJldHVybiBwcGd0dDsKIH0KIAotdm9pZCBpOTE1X3Bw Z3R0X2Nsb3NlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQorc3RhdGljIHZvaWQgcHBn dHRfY2xvc2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCiB7CiAJc3RydWN0IGxpc3Rf aGVhZCAqcGhhc2VzW10gPSB7CiAJCSZ2bS0+YWN0aXZlX2xpc3QsCkBAIC0yMjUwLDYgKzIyNTAs OCBAQCB2b2lkIGk5MTVfcHBndHRfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZikKIAogCXRyYWNl X2k5MTVfcHBndHRfcmVsZWFzZSgmcHBndHQtPmJhc2UpOwogCisJcHBndHRfY2xvc2UoJnBwZ3R0 LT5iYXNlKTsKKwogCS8qIHZtYXMgc2hvdWxkIGFscmVhZHkgYmUgdW5ib3VuZCBhbmQgZGVzdHJv eWVkICovCiAJV0FSTl9PTighbGlzdF9lbXB0eSgmcHBndHQtPmJhc2UuYWN0aXZlX2xpc3QpKTsK IAlXQVJOX09OKCFsaXN0X2VtcHR5KCZwcGd0dC0+YmFzZS5pbmFjdGl2ZV9saXN0KSk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCmluZGV4IDAwMjhhMGNjYzlhMC4uZTM5ZDhlOTZlOTI4 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaApAQCAtNTkyLDcgKzU5Miw2IEBAIHZv aWQgaTkxNV9wcGd0dF9yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKTsKIHN0cnVjdCBpOTE1X2h3 X3BwZ3R0ICppOTE1X3BwZ3R0X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAJCQkJCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZwcml2LAogCQkJCQljb25z dCBjaGFyICpuYW1lKTsKLXZvaWQgaTkxNV9wcGd0dF9jbG9zZShzdHJ1Y3QgaTkxNV9hZGRyZXNz X3NwYWNlICp2bSk7CiBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9wcGd0dF9nZXQoc3RydWN0IGk5 MTVfaHdfcHBndHQgKnBwZ3R0KQogewogCWlmIChwcGd0dCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jCmluZGV4IDJlYTY5Mzk0ZjQyOC4uYTRlNjVkZDFhNzNj IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMKQEAgLTE3 MTIsNyArMTcxMiw2IEBAIGludCBpOTE1X2dlbV9odWdlX3BhZ2VfbW9ja19zZWxmdGVzdHModm9p ZCkKIAllcnIgPSBpOTE1X3N1YnRlc3RzKHRlc3RzLCBwcGd0dCk7CiAKIG91dF9jbG9zZToKLQlp OTE1X3BwZ3R0X2Nsb3NlKCZwcGd0dC0+YmFzZSk7CiAJaTkxNV9wcGd0dF9wdXQocHBndHQpOwog CiBvdXRfdW5sb2NrOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X2dlbV9jb250ZXh0LmMKaW5kZXggNTZhODAzZDExOTE2Li4wZWQ2NjUzYTJhM2QgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAt MTI3LDEwICsxMjcsNiBAQCBzdGF0aWMgaW50IGdwdV9maWxsKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCiAJaWYgKElTX0VSUih2bWEpKQogCQlyZXR1cm4gUFRSX0VSUih2bWEpOwog Ci0JZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOwot CWlmIChlcnIpCi0JCXJldHVybiBlcnI7Ci0KIAllcnIgPSBpOTE1X3ZtYV9waW4odm1hLCAwLCAw LCBQSU5fSElHSCB8IFBJTl9VU0VSKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwpAQCAtMTcz LDcgKzE2OSw3IEBAIHN0YXRpYyBpbnQgZ3B1X2ZpbGwoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKIAlpOTE1X3ZtYV91bnBpbihiYXRjaCk7CiAJaTkxNV92bWFfY2xvc2UoYmF0Y2gp OwogCi0JaTkxNV92bWFfbW92ZV90b19hY3RpdmUodm1hLCBycSwgMCk7CisJaTkxNV92bWFfbW92 ZV90b19hY3RpdmUodm1hLCBycSwgRVhFQ19PQkpFQ1RfV1JJVEUpOwogCWk5MTVfdm1hX3VucGlu KHZtYSk7CiAKIAlyZXNlcnZhdGlvbl9vYmplY3RfbG9jayhvYmotPnJlc3YsIE5VTEwpOwpAQCAt MjIwLDcgKzIxNiw4IEBAIHN0YXRpYyBpbnQgY3B1X2ZpbGwoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwgdTMyIHZhbHVlKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGNwdV9j aGVjayhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCB1bnNpZ25lZCBpbnQgbWF4KQor c3RhdGljIG5vaW5saW5lIGludCBjcHVfY2hlY2soc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKKwkJCSAgICAgIHVuc2lnbmVkIGludCBpZHgsIHVuc2lnbmVkIGludCBtYXgpCiB7CiAJ dW5zaWduZWQgaW50IG4sIG0sIG5lZWRzX2ZsdXNoOwogCWludCBlcnI7CkBAIC0yMzgsOCArMjM1 LDggQEAgc3RhdGljIGludCBjcHVfY2hlY2soc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwgdW5zaWduZWQgaW50IG1heCkKIAogCQlmb3IgKG0gPSAwOyBtIDwgbWF4OyBtKyspIHsKIAkJ CWlmIChtYXBbbV0gIT0gbSkgewotCQkJCXByX2VycigiSW52YWxpZCB2YWx1ZSBhdCBwYWdlICVk LCBvZmZzZXQgJWQ6IGZvdW5kICV4IGV4cGVjdGVkICV4XG4iLAotCQkJCSAgICAgICBuLCBtLCBt YXBbbV0sIG0pOworCQkJCXByX2VycigiJXBTOiBJbnZhbGlkIHZhbHVlIGF0IG9iamVjdCAlZCBw YWdlICVkLCBvZmZzZXQgJWQ6IGZvdW5kICV4IGV4cGVjdGVkICV4XG4iLAorCQkJCSAgICAgICBf X2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIGlkeCwgbiwgbSwgbWFwW21dLCBtKTsKIAkJCQll cnIgPSAtRUlOVkFMOwogCQkJCWdvdG8gb3V0X3VubWFwOwogCQkJfQpAQCAtMjQ3LDggKzI0NCw4 IEBAIHN0YXRpYyBpbnQgY3B1X2NoZWNrKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos IHVuc2lnbmVkIGludCBtYXgpCiAKIAkJZm9yICg7IG0gPCBEV19QRVJfUEFHRTsgbSsrKSB7CiAJ CQlpZiAobWFwW21dICE9IDB4ZGVhZGJlZWYpIHsKLQkJCQlwcl9lcnIoIkludmFsaWQgdmFsdWUg YXQgcGFnZSAlZCwgb2Zmc2V0ICVkOiBmb3VuZCAleCBleHBlY3RlZCAleFxuIiwKLQkJCQkgICAg ICAgbiwgbSwgbWFwW21dLCAweGRlYWRiZWVmKTsKKwkJCQlwcl9lcnIoIiVwUzogSW52YWxpZCB2 YWx1ZSBhdCBvYmplY3QgJWQgcGFnZSAlZCwgb2Zmc2V0ICVkOiBmb3VuZCAleCBleHBlY3RlZCAl eFxuIiwKKwkJCQkgICAgICAgX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApLCBpZHgsIG4sIG0s IG1hcFttXSwgMHhkZWFkYmVlZik7CiAJCQkJZXJyID0gLUVJTlZBTDsKIAkJCQlnb3RvIG91dF91 bm1hcDsKIAkJCX0KQEAgLTMxMSw2ICszMDgsMTAgQEAgY3JlYXRlX3Rlc3Rfb2JqZWN0KHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJCXJldHVybiBFUlJfUFRSKGVycik7CiAJfQogCisJ ZXJyID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOworCWlm IChlcnIpCisJCXJldHVybiBFUlJfUFRSKGVycik7CisKIAlsaXN0X2FkZF90YWlsKCZvYmotPnN0 X2xpbmssIG9iamVjdHMpOwogCXJldHVybiBvYmo7CiB9CkBAIC0zMjYsMTIgKzMyNyw4IEBAIHN0 YXRpYyB1bnNpZ25lZCBsb25nIG1heF9kd29yZHMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKIHN0YXRpYyBpbnQgaWd0X2N0eF9leGVjKHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqID0gTlVMTDsKLQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7Ci0JSUdUX1RJTUVPVVQoZW5kX3Rp bWUpOwotCUxJU1RfSEVBRChvYmplY3RzKTsKLQl1bnNpZ25lZCBsb25nIG5jb250ZXh0cywgbmR3 b3JkcywgZHc7Ci0JYm9vbCBmaXJzdF9zaGFyZWRfZ3R0ID0gdHJ1ZTsKKwlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmU7CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAJaW50IGVyciA9 IC1FTk9ERVY7CiAKIAkvKiBDcmVhdGUgYSBmZXcgZGlmZmVyZW50IGNvbnRleHRzICh3aXRoIGRp ZmZlcmVudCBtbSkgYW5kIHdyaXRlCkBAIC0zMzksMzcgKzMzNiwxNjIgQEAgc3RhdGljIGludCBp Z3RfY3R4X2V4ZWModm9pZCAqYXJnKQogCSAqIHVwIGluIHRoZSBleHBlY3RlZCBwYWdlcyBvZiBv dXIgb2JqLgogCSAqLwogCi0JZmlsZSA9IG1vY2tfZmlsZShpOTE1KTsKLQlpZiAoSVNfRVJSKGZp bGUpKQotCQlyZXR1cm4gUFRSX0VSUihmaWxlKTsKKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBp OTE1LCBpZCkgeworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gTlVMTDsKKwkJ c3RydWN0IGRybV9maWxlICpmaWxlOworCQlJR1RfVElNRU9VVChlbmRfdGltZSk7CisJCUxJU1Rf SEVBRChvYmplY3RzKTsKKwkJdW5zaWduZWQgbG9uZyBuY29udGV4dHMsIG5kd29yZHMsIGR3Owor CQlib29sIGZpcnN0X3NoYXJlZF9ndHQgPSB0cnVlOworCisJCWlmICghaW50ZWxfZW5naW5lX2Nh bl9zdG9yZV9kd29yZChlbmdpbmUpKQorCQkJY29udGludWU7CiAKLQltdXRleF9sb2NrKCZpOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKKwkJZmlsZSA9IG1vY2tfZmlsZShpOTE1KTsKKwkJaWYgKElT X0VSUihmaWxlKSkKKwkJCXJldHVybiBQVFJfRVJSKGZpbGUpOwogCi0JbmNvbnRleHRzID0gMDsK LQluZHdvcmRzID0gMDsKLQlkdyA9IDA7Ci0Jd2hpbGUgKCF0aW1lX2FmdGVyKGppZmZpZXMsIGVu ZF90aW1lKSkgewotCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Ci0JCXN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHg7Ci0JCXVuc2lnbmVkIGludCBpZDsKKwkJbXV0ZXhfbG9jaygm aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKLQkJaWYgKGZpcnN0X3NoYXJlZF9ndHQpIHsKLQkJ CWN0eCA9IF9fY3JlYXRlX2h3X2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOwotCQkJ Zmlyc3Rfc2hhcmVkX2d0dCA9IGZhbHNlOwotCQl9IGVsc2UgewotCQkJY3R4ID0gaTkxNV9nZW1f Y3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOworCisJCW5jb250ZXh0cyA9 IDA7CisJCW5kd29yZHMgPSAwOworCQlkdyA9IDA7CisJCXdoaWxlICghdGltZV9hZnRlcihqaWZm aWVzLCBlbmRfdGltZSkpIHsKKwkJCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7CisKKwkJ CWlmIChmaXJzdF9zaGFyZWRfZ3R0KSB7CisJCQkJY3R4ID0gX19jcmVhdGVfaHdfY29udGV4dChp OTE1LCBmaWxlLT5kcml2ZXJfcHJpdik7CisJCQkJZmlyc3Rfc2hhcmVkX2d0dCA9IGZhbHNlOwor CQkJfSBlbHNlIHsKKwkJCQljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LAorCQkJ CQkJCSAgICAgIGZpbGUtPmRyaXZlcl9wcml2LAorCQkJCQkJCSAgICAgIENSRUFURV9WTSB8CisJ CQkJCQkJICAgICAgQ1JFQVRFX1RJTUVMSU5FKTsKKwkJCX0KKwkJCWlmIChJU19FUlIoY3R4KSkg eworCQkJCWVyciA9IFBUUl9FUlIoY3R4KTsKKwkJCQlnb3RvIG91dF91bmxvY2s7CisJCQl9CisK KwkJCWlmICghb2JqKSB7CisJCQkJb2JqID0gY3JlYXRlX3Rlc3Rfb2JqZWN0KGN0eCwgZmlsZSwg Jm9iamVjdHMpOworCQkJCWlmIChJU19FUlIob2JqKSkgeworCQkJCQllcnIgPSBQVFJfRVJSKG9i aik7CisJCQkJCWdvdG8gb3V0X3VubG9jazsKKwkJCQl9CisJCQl9CisKKwkJCWludGVsX3J1bnRp bWVfcG1fZ2V0KGk5MTUpOworCQkJZXJyID0gZ3B1X2ZpbGwob2JqLCBjdHgsIGVuZ2luZSwgZHcp OworCQkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7CisJCQlpZiAoZXJyKSB7CisJCQkJcHJf ZXJyKCJGYWlsZWQgdG8gZmlsbCBkd29yZCAlbHUgWyVsdS8lbHVdIHdpdGggZ3B1ICglcykgaW4g Y3R4ICV1IFtmdWxsLXBwZ3R0PyAlc10sIGVycj0lZFxuIiwKKwkJCQkgICAgICAgbmR3b3Jkcywg ZHcsIG1heF9kd29yZHMob2JqKSwKKwkJCQkgICAgICAgZW5naW5lLT5uYW1lLCBjdHgtPmh3X2lk LAorCQkJCSAgICAgICB5ZXNubyghIWN0eC0+cHBndHQpLCBlcnIpOworCQkJCWdvdG8gb3V0X3Vu bG9jazsKKwkJCX0KKworCQkJaWYgKCsrZHcgPT0gbWF4X2R3b3JkcyhvYmopKSB7CisJCQkJb2Jq ID0gTlVMTDsKKwkJCQlkdyA9IDA7CisJCQl9CisKKwkJCW5kd29yZHMrKzsKKwkJCW5jb250ZXh0 cysrOworCQl9CisKKwkJcHJfaW5mbygiU3VibWl0dGVkICVsdSBjb250ZXh0cyB0byAlcywgZmls bGluZyAlbHUgZHdvcmRzXG4iLAorCQkJbmNvbnRleHRzLCBlbmdpbmUtPm5hbWUsIG5kd29yZHMp OworCisJCW5jb250ZXh0cyA9IGR3ID0gMDsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShvYmosICZv YmplY3RzLCBzdF9saW5rKSB7CisJCQl1bnNpZ25lZCBpbnQgcmVtID0KKwkJCQltaW5fdCh1bnNp Z25lZCBpbnQsIG5kd29yZHMgLSBkdywgbWF4X2R3b3JkcyhvYmopKTsKKworCQkJZXJyID0gY3B1 X2NoZWNrKG9iaiwgbmNvbnRleHRzKyssIHJlbSk7CisJCQlpZiAoZXJyKQorCQkJCWJyZWFrOwor CisJCQlkdyArPSByZW07CiAJCX0KLQkJaWYgKElTX0VSUihjdHgpKSB7Ci0JCQllcnIgPSBQVFJf RVJSKGN0eCk7CisKK291dF91bmxvY2s6CisJCWk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoaTkxNSwg STkxNV9XQUlUX0xPQ0tFRCk7CisJCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCk7CisKKwkJbW9ja19maWxlX2ZyZWUoaTkxNSwgZmlsZSk7CisJCWlmIChlcnIpCisJCQlyZXR1 cm4gZXJyOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlndF9zaGFyZWRfY3R4 X2V4ZWModm9pZCAqYXJnKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJn OworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwllbnVtIGludGVsX2VuZ2luZV9p ZCBpZDsKKwlpbnQgZXJyID0gLUVOT0RFVjsKKworCS8qCisJICogQ3JlYXRlIGEgZmV3IGRpZmZl cmVudCBjb250ZXh0cyB3aXRoIHRoZSBzYW1lIG1tIGFuZCB3cml0ZQorCSAqIHRocm91Z2ggZWFj aCBjdHggdXNpbmcgdGhlIEdQVSBtYWtpbmcgc3VyZSB0aG9zZSB3cml0ZXMgZW5kCisJICogdXAg aW4gdGhlIGV4cGVjdGVkIHBhZ2VzIG9mIG91ciBvYmouCisJICovCisKKwlmb3JfZWFjaF9lbmdp bmUoZW5naW5lLCBpOTE1LCBpZCkgeworCQlJR1RfVElNRU9VVChlbmRfdGltZSk7CisJCUxJU1Rf SEVBRChvYmplY3RzKTsKKwkJdW5zaWduZWQgbG9uZyBuY29udGV4dHMsIG5kd29yZHMsIGR3Owor CQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gTlVMTDsKKwkJc3RydWN0IGRybV9m aWxlICpmaWxlOworCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqcGFyZW50OworCisJCWlmICgh aW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChlbmdpbmUpKQorCQkJY29udGludWU7CisKKwkJ ZmlsZSA9IG1vY2tfZmlsZShpOTE1KTsKKwkJaWYgKElTX0VSUihmaWxlKSkKKwkJCXJldHVybiBQ VFJfRVJSKGZpbGUpOworCisJCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwor CisJCXBhcmVudCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGUtPmRyaXZlcl9w cml2LAorCQkJCQkJIENSRUFURV9WTSB8IENSRUFURV9USU1FTElORSk7CisJCWlmIChJU19FUlIo cGFyZW50KSkgeworCQkJZXJyID0gUFRSX0VSUihwYXJlbnQpOworCQkJZ290byBvdXRfdW5sb2Nr OworCQl9CisKKwkJaWYgKCFwYXJlbnQtPnBwZ3R0KSB7CisJCQllcnIgPSAwOwogCQkJZ290byBv dXRfdW5sb2NrOwogCQl9CiAKLQkJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsK LQkJCWlmICghaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChlbmdpbmUpKQotCQkJCWNvbnRp bnVlOworCisJCW5jb250ZXh0cyA9IDA7CisJCW5kd29yZHMgPSAwOworCQlkdyA9IDA7CisJCXdo aWxlICghdGltZV9hZnRlcihqaWZmaWVzLCBlbmRfdGltZSkpIHsKKwkJCXN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHg7CisKKwkJCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUs CisJCQkJCQkgICAgICBmaWxlLT5kcml2ZXJfcHJpdiwKKwkJCQkJCSAgICAgIDApOworCQkJaWYg KElTX0VSUihjdHgpKSB7CisJCQkJZXJyID0gUFRSX0VSUihjdHgpOworCQkJCWdvdG8gb3V0X3Vu bG9jazsKKwkJCX0KKworCQkJaTkxNV9wcGd0dF9nZXQocGFyZW50LT5wcGd0dCk7CisJCQljdHgt PnBwZ3R0ID0gcGFyZW50LT5wcGd0dDsKKwkJCWN0eC0+ZGVzY190ZW1wbGF0ZSA9IHBhcmVudC0+ ZGVzY190ZW1wbGF0ZTsKIAogCQkJaWYgKCFvYmopIHsKLQkJCQlvYmogPSBjcmVhdGVfdGVzdF9v YmplY3QoY3R4LCBmaWxlLCAmb2JqZWN0cyk7CisJCQkJb2JqID0gY3JlYXRlX3Rlc3Rfb2JqZWN0 KHBhcmVudCwgZmlsZSwgJm9iamVjdHMpOwogCQkJCWlmIChJU19FUlIob2JqKSkgewogCQkJCQll cnIgPSBQVFJfRVJSKG9iaik7CiAJCQkJCWdvdG8gb3V0X3VubG9jazsKQEAgLTM5MSwzMCArNTEz LDM1IEBAIHN0YXRpYyBpbnQgaWd0X2N0eF9leGVjKHZvaWQgKmFyZykKIAkJCQlvYmogPSBOVUxM OwogCQkJCWR3ID0gMDsKIAkJCX0KKwogCQkJbmR3b3JkcysrOworCQkJbmNvbnRleHRzKys7CiAJ CX0KLQkJbmNvbnRleHRzKys7Ci0JfQotCXByX2luZm8oIlN1Ym1pdHRlZCAlbHUgY29udGV4dHMg KGFjcm9zcyAldSBlbmdpbmVzKSwgZmlsbGluZyAlbHUgZHdvcmRzXG4iLAotCQluY29udGV4dHMs IElOVEVMX0lORk8oaTkxNSktPm51bV9yaW5ncywgbmR3b3Jkcyk7CisJCXByX2luZm8oIlN1Ym1p dHRlZCAlbHUgY29udGV4dHMgdG8gJXMsIGZpbGxpbmcgJWx1IGR3b3Jkc1xuIiwKKwkJCW5jb250 ZXh0cywgZW5naW5lLT5uYW1lLCBuZHdvcmRzKTsKIAotCWR3ID0gMDsKLQlsaXN0X2Zvcl9lYWNo X2VudHJ5KG9iaiwgJm9iamVjdHMsIHN0X2xpbmspIHsKLQkJdW5zaWduZWQgaW50IHJlbSA9Ci0J CQltaW5fdCh1bnNpZ25lZCBpbnQsIG5kd29yZHMgLSBkdywgbWF4X2R3b3JkcyhvYmopKTsKKwkJ bmNvbnRleHRzID0gZHcgPSAwOworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG9iaiwgJm9iamVjdHMs IHN0X2xpbmspIHsKKwkJCXVuc2lnbmVkIGludCByZW0gPQorCQkJCW1pbl90KHVuc2lnbmVkIGlu dCwgbmR3b3JkcyAtIGR3LCBtYXhfZHdvcmRzKG9iaikpOwogCi0JCWVyciA9IGNwdV9jaGVjayhv YmosIHJlbSk7Ci0JCWlmIChlcnIpCi0JCQlicmVhazsKKwkJCWVyciA9IGNwdV9jaGVjayhvYmos IG5jb250ZXh0cysrLCByZW0pOworCQkJaWYgKGVycikKKwkJCQlicmVhazsKIAotCQlkdyArPSBy ZW07Ci0JfQorCQkJZHcgKz0gcmVtOworCQl9CiAKIG91dF91bmxvY2s6Ci0JbXV0ZXhfdW5sb2Nr KCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwkJaTkxNV9nZW1fd2FpdF9mb3JfaWRsZShpOTE1 LCBJOTE1X1dBSVRfTE9DS0VEKTsKKwkJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211 dGV4KTsKIAotCW1vY2tfZmlsZV9mcmVlKGk5MTUsIGZpbGUpOwotCXJldHVybiBlcnI7CisJCW1v Y2tfZmlsZV9mcmVlKGk5MTUsIGZpbGUpOworCQlpZiAoZXJyKQorCQkJcmV0dXJuIGVycjsKKwl9 CisKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBmYWtlX2FsaWFzaW5nX3BwZ3R0X2VuYWJs ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKQEAgLTQ0OCw2ICs1NzUsNyBAQCBpbnQg aTkxNV9nZW1fY29udGV4dF9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiB7CiAJc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3N1YnRlc3QgdGVzdHNbXSA9 IHsKIAkJU1VCVEVTVChpZ3RfY3R4X2V4ZWMpLAorCQlTVUJURVNUKGlndF9zaGFyZWRfY3R4X2V4 ZWMpLAogCX07CiAJYm9vbCBmYWtlX2FsaWFzID0gZmFsc2U7CiAJaW50IGVycjsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYwppbmRleCBiYjdjZjk5OGZj NjUuLmQ2YzIxYTBiNjZhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfZ2VtX2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p OTE1X2dlbV9ndHQuYwpAQCAtOTE0LDcgKzkxNCw2IEBAIHN0YXRpYyBpbnQgZXhlcmNpc2VfcHBn dHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiAJZXJyID0gZnVuYyhkZXZf cHJpdiwgJnBwZ3R0LT5iYXNlLCAwLCBwcGd0dC0+YmFzZS50b3RhbCwgZW5kX3RpbWUpOwogCi0J aTkxNV9wcGd0dF9jbG9zZSgmcHBndHQtPmJhc2UpOwogCWk5MTVfcHBndHRfcHV0KHBwZ3R0KTsK IG91dF91bmxvY2s6CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKaW5kZXgg YmJmODBkNDJlNzkzLi4zN2RmMjlhZTk2NjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKQEAgLTkwLDUgKzkwLDYgQEAgbGl2ZV9jb250ZXh0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7CiAJ bG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKLQlyZXR1cm4g aTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOworCXJldHVy biBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdiwKKwkJCQkg ICAgICAgQ1JFQVRFX1ZNIHwgQ1JFQVRFX1RJTUVMSU5FKTsKIH0KZGlmZiAtLWdpdCBhL2luY2x1 ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAppbmRl eCBjN2E5MGFiMzVkYjguLmJjM2UyNWIwOWY3NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2Ry bS9pOTE1X2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApAQCAtMzgyLDcg KzM4Miw3IEBAIHR5cGVkZWYgc3RydWN0IF9kcm1faTkxNV9zYXJlYSB7CiAjZGVmaW5lIERSTV9J T0NUTF9JOTE1X1NFVF9TUFJJVEVfQ09MT1JLRVkgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSAr IERSTV9JOTE1X1NFVF9TUFJJVEVfQ09MT1JLRVksIHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2Nv bG9ya2V5KQogI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRVRfU1BSSVRFX0NPTE9SS0VZIERSTV9J T1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRVRfU1BSSVRFX0NPTE9SS0VZLCBzdHJ1 Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSkKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VN X1dBSVQJCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fV0FJVCwgc3Ry dWN0IGRybV9pOTE1X2dlbV93YWl0KQotI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVY VF9DUkVBVEUJRFJNX0lPV1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fQ09OVEVY VF9DUkVBVEUsIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGUpCisjZGVmaW5lIERS TV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX0NSRUFURQlEUk1fSU9XUiAoRFJNX0NPTU1BTkRfQkFT RSArIERSTV9JOTE1X0dFTV9DT05URVhUX0NSRUFURSwgc3RydWN0IGRybV9pOTE1X2dlbV9jb250 ZXh0X2NyZWF0ZV92MikKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0NPTlRFWFRfREVTVFJP WQlEUk1fSU9XIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0NPTlRFWFRfREVTVFJP WSwgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3kpCiAjZGVmaW5lIERSTV9JT0NU TF9JOTE1X1JFR19SRUFECQkJRFJNX0lPV1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9S RUdfUkVBRCwgc3RydWN0IGRybV9pOTE1X3JlZ19yZWFkKQogI2RlZmluZSBEUk1fSU9DVExfSTkx NV9HRVRfUkVTRVRfU1RBVFMJCURSTV9JT1dSIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVf R0VUX1JFU0VUX1NUQVRTLCBzdHJ1Y3QgZHJtX2k5MTVfcmVzZXRfc3RhdHMpCkBAIC0xNDAwLDYg KzE0MDAsMTUgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZSB7CiAJX191MzIg cGFkOwogfTsKIAorc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV92MiB7CisJLyog IG91dHB1dDogaWQgb2YgbmV3IGNvbnRleHQqLworCV9fdTMyIGN0eF9pZDsKKwlfX3UzMiBmbGFn czsKKyNkZWZpbmUgSTkxNV9HRU1fQ09OVEVYVF9TSEFSRV9HVFQgMHgxCisJX191MzIgc2hhcmVf Y3R4OworCV9fdTMyIHBhZDsKK307CisKIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9kZXN0 cm95IHsKIAlfX3UzMiBjdHhfaWQ7CiAJX191MzIgcGFkOwotLSAKMi4xNC4xCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK