From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gerd Hoffmann Subject: [PATCH v7] Add udmabuf misc device Date: Mon, 27 Aug 2018 11:34:44 +0200 Message-ID: <20180827093444.23623-1-kraxel@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by gabe.freedesktop.org (Postfix) with ESMTPS id 594E96E189 for ; Mon, 27 Aug 2018 09:34:49 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: "open list:KERNEL SELFTEST FRAMEWORK" , Tomeu Vizoso , Jonathan Corbet , David Airlie , "open list:DOCUMENTATION" , open list , "moderated list:DMA BUFFER SHARING FRAMEWORK" , Gerd Hoffmann , "open list:DMA BUFFER SHARING FRAMEWORK" , Shuah Khan , Laurent Pinchart List-Id: dri-devel@lists.freedesktop.org QSBkcml2ZXIgdG8gbGV0IHVzZXJzcGFjZSB0dXJuIG1lbWZkIHJlZ2lvbnMgaW50byBkbWEtYnVm cy4KClVzZSBjYXNlOiAgQWxsb3dzIHFlbXUgY3JlYXRlIGRtYWJ1ZnMgZm9yIHRoZSB2Z2EgZnJh bWVidWZmZXIgb3IKdmlydGlvLWdwdSByZXNzb3VyY2VzLiAgVGhlbiB0aGV5IGNhbiBiZSBwYXNz ZWQgYXJvdW5kIHRvIGRpc3BsYXkKdGhvc2UgZ3Vlc3QgdGhpbmdzIG9uIHRoZSBob3N0LiAgVG8g c3BpY2UgY2xpZW50IGZvciBjbGFzc2ljIGZ1bGwKZnJhbWVidWZmZXIgZGlzcGxheSwgYW5kIGhv cGVmdWxseSBzb21lIGRheSB0byB3YXlsYW5kIHNlcnZlciBmb3IKc2VhbWxlc3MgZ3Vlc3Qgd2lu ZG93IGRpc3BsYXkuCgpxZW11IHRlc3QgYnJhbmNoOgogIGh0dHBzOi8vZ2l0LmtyYXhlbC5vcmcv Y2dpdC9xZW11L2xvZy8/aD1zaXJpdXMvdWRtYWJ1ZgoKQ2M6IERhdmlkIEFpcmxpZSA8YWlybGll ZEBsaW51eC5pZT4KQ2M6IFRvbWV1IFZpem9zbyA8dG9tZXUudml6b3NvQGNvbGxhYm9yYS5jb20+ CkNjOiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+ CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+ClNpZ25lZC1vZmYtYnk6IEdlcmQg SG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgotLS0KIERvY3VtZW50YXRpb24vaW9jdGwvaW9j dGwtbnVtYmVyLnR4dCAgICAgICAgICAgICAgfCAgIDEgKwogaW5jbHVkZS91YXBpL2xpbnV4L3Vk bWFidWYuaCAgICAgICAgICAgICAgICAgICAgICB8ICAzMyArKysKIGRyaXZlcnMvZG1hLWJ1Zi91 ZG1hYnVmLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAyODcgKysrKysrKysrKysrKysrKysr KysrKwogdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9kbWEtYnVmL3VkbWFidWYuYyB8 ICA5NiArKysrKysrKwogTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAxNiArKwogZHJpdmVycy9kbWEtYnVmL0tjb25maWcgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgOCArCiBkcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAxICsKIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvZG1h LWJ1Zi9NYWtlZmlsZSAgfCAgIDUgKwogOCBmaWxlcyBjaGFuZ2VkLCA0NDcgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvdWFwaS9saW51eC91ZG1hYnVmLmgKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2RtYS1idWYvdWRtYWJ1Zi5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9kbWEtYnVmL3VkbWFidWYuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvZG1hLWJ1Zi9N YWtlZmlsZQoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW9jdGwvaW9jdGwtbnVtYmVyLnR4 dCBiL0RvY3VtZW50YXRpb24vaW9jdGwvaW9jdGwtbnVtYmVyLnR4dAppbmRleCAxM2E3Yzk5OWMw Li5mMmFjNjcyZWI3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2lvY3RsL2lvY3RsLW51bWJl ci50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9pb2N0bC9pb2N0bC1udW1iZXIudHh0CkBAIC0yNzIs NiArMjcyLDcgQEAgQ29kZSAgU2VxIyhoZXgpCUluY2x1ZGUgRmlsZQkJQ29tbWVudHMKICd0Jwk5 MC05MQlsaW51eC90b3NoaWJhLmgJCXRvc2hpYmEgYW5kIHRvc2hpYmFfYWNwaSBTTU0KICd1Jwkw MC0xRglsaW51eC9zbWJfZnMuaAkJZ29uZQogJ3UnCTIwLTNGCWxpbnV4L3V2Y3ZpZGVvLmgJVVNC IHZpZGVvIGNsYXNzIGhvc3QgZHJpdmVyCisndScJNDAtNGYJbGludXgvdWRtYWJ1Zi5oCQl1c2Vy c3BhY2UgZG1hLWJ1ZiBtaXNjIGRldmljZQogJ3YnCTAwLTFGCWxpbnV4L2V4dDJfZnMuaAkJY29u ZmxpY3QhCiAndicJMDAtMUYJbGludXgvZnMuaAkJY29uZmxpY3QhCiAndicJMDAtMEYJbGludXgv c29ueXBpLmgJCWNvbmZsaWN0IQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3VkbWFi dWYuaCBiL2luY2x1ZGUvdWFwaS9saW51eC91ZG1hYnVmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uNDZiNjUzMmVkOAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUv dWFwaS9saW51eC91ZG1hYnVmLmgKQEAgLTAsMCArMSwzMyBAQAorLyogU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKyNpZm5kZWYgX1VB UElfTElOVVhfVURNQUJVRl9ICisjZGVmaW5lIF9VQVBJX0xJTlVYX1VETUFCVUZfSAorCisjaW5j bHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9pb2N0bC5oPgorCisjZGVmaW5l IFVETUFCVUZfRkxBR1NfQ0xPRVhFQwkweDAxCisKK3N0cnVjdCB1ZG1hYnVmX2NyZWF0ZSB7CisJ X191MzIgbWVtZmQ7CisJX191MzIgZmxhZ3M7CisJX191NjQgb2Zmc2V0OworCV9fdTY0IHNpemU7 Cit9OworCitzdHJ1Y3QgdWRtYWJ1Zl9jcmVhdGVfaXRlbSB7CisJX191MzIgbWVtZmQ7CisJX191 MzIgX19wYWQ7CisJX191NjQgb2Zmc2V0OworCV9fdTY0IHNpemU7Cit9OworCitzdHJ1Y3QgdWRt YWJ1Zl9jcmVhdGVfbGlzdCB7CisJX191MzIgZmxhZ3M7CisJX191MzIgY291bnQ7CisJc3RydWN0 IHVkbWFidWZfY3JlYXRlX2l0ZW0gbGlzdFtdOworfTsKKworI2RlZmluZSBVRE1BQlVGX0NSRUFU RSAgICAgICBfSU9XKCd1JywgMHg0Miwgc3RydWN0IHVkbWFidWZfY3JlYXRlKQorI2RlZmluZSBV RE1BQlVGX0NSRUFURV9MSVNUICBfSU9XKCd1JywgMHg0Mywgc3RydWN0IHVkbWFidWZfY3JlYXRl X2xpc3QpCisKKyNlbmRpZiAvKiBfVUFQSV9MSU5VWF9VRE1BQlVGX0ggKi8KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZG1hLWJ1Zi91ZG1hYnVmLmMgYi9kcml2ZXJzL2RtYS1idWYvdWRtYWJ1Zi5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjhlMjQyMDQ1MjYKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2RtYS1idWYvdWRtYWJ1Zi5jCkBAIC0wLDAgKzEsMjg3IEBACisv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorI2luY2x1ZGUgPGxpbnV4L2luaXQu aD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4K KyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5j bHVkZSA8bGludXgvbWlzY2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KKyNp bmNsdWRlIDxsaW51eC9oaWdobWVtLmg+CisjaW5jbHVkZSA8bGludXgvY3JlZC5oPgorI2luY2x1 ZGUgPGxpbnV4L3NobWVtX2ZzLmg+CisjaW5jbHVkZSA8bGludXgvbWVtZmQuaD4KKworI2luY2x1 ZGUgPHVhcGkvbGludXgvdWRtYWJ1Zi5oPgorCitzdHJ1Y3QgdWRtYWJ1ZiB7CisJdTMyIHBhZ2Vj b3VudDsKKwlzdHJ1Y3QgcGFnZSAqKnBhZ2VzOworfTsKKworc3RhdGljIGludCB1ZG1hYnVmX3Zt X2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQoreworCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq dm1hID0gdm1mLT52bWE7CisJc3RydWN0IHVkbWFidWYgKnVidWYgPSB2bWEtPnZtX3ByaXZhdGVf ZGF0YTsKKworCWlmIChXQVJOX09OKHZtZi0+cGdvZmYgPj0gdWJ1Zi0+cGFnZWNvdW50KSkKKwkJ cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKKworCXZtZi0+cGFnZSA9IHVidWYtPnBhZ2VzW3ZtZi0+ cGdvZmZdOworCWdldF9wYWdlKHZtZi0+cGFnZSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgdWRtYWJ1Zl92bV9vcHMgPSB7CisJLmZh dWx0ID0gdWRtYWJ1Zl92bV9mYXVsdCwKK307CisKK3N0YXRpYyBpbnQgbW1hcF91ZG1hYnVmKHN0 cnVjdCBkbWFfYnVmICpidWYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXN0cnVj dCB1ZG1hYnVmICp1YnVmID0gYnVmLT5wcml2OworCisJaWYgKCh2bWEtPnZtX2ZsYWdzICYgKFZN X1NIQVJFRCB8IFZNX01BWVNIQVJFKSkgPT0gMCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwl2bWEt PnZtX29wcyA9ICZ1ZG1hYnVmX3ZtX29wczsKKwl2bWEtPnZtX3ByaXZhdGVfZGF0YSA9IHVidWY7 CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKm1hcF91ZG1hYnVmKHN0 cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0LAorCQkJCSAgICBlbnVtIGRtYV9kYXRhX2RpcmVj dGlvbiBkaXJlY3Rpb24pCit7CisJc3RydWN0IHVkbWFidWYgKnVidWYgPSBhdC0+ZG1hYnVmLT5w cml2OworCXN0cnVjdCBzZ190YWJsZSAqc2c7CisKKwlzZyA9IGt6YWxsb2Moc2l6ZW9mKCpzZyks IEdGUF9LRVJORUwpOworCWlmICghc2cpCisJCWdvdG8gZXJyMTsKKwlpZiAoc2dfYWxsb2NfdGFi bGVfZnJvbV9wYWdlcyhzZywgdWJ1Zi0+cGFnZXMsIHVidWYtPnBhZ2Vjb3VudCwKKwkJCQkgICAg ICAwLCB1YnVmLT5wYWdlY291bnQgPDwgUEFHRV9TSElGVCwKKwkJCQkgICAgICBHRlBfS0VSTkVM KSA8IDApCisJCWdvdG8gZXJyMjsKKwlpZiAoIWRtYV9tYXBfc2coYXQtPmRldiwgc2ctPnNnbCwg c2ctPm5lbnRzLCBkaXJlY3Rpb24pKQorCQlnb3RvIGVycjM7CisKKwlyZXR1cm4gc2c7CisKK2Vy cjM6CisJc2dfZnJlZV90YWJsZShzZyk7CitlcnIyOgorCWtmcmVlKHNnKTsKK2VycjE6CisJcmV0 dXJuIEVSUl9QVFIoLUVOT01FTSk7Cit9CisKK3N0YXRpYyB2b2lkIHVubWFwX3VkbWFidWYoc3Ry dWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXQsCisJCQkgIHN0cnVjdCBzZ190YWJsZSAqc2csCisJ CQkgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKwlzZ19mcmVlX3RhYmxl KHNnKTsKKwlrZnJlZShzZyk7Cit9CisKK3N0YXRpYyB2b2lkIHJlbGVhc2VfdWRtYWJ1ZihzdHJ1 Y3QgZG1hX2J1ZiAqYnVmKQoreworCXN0cnVjdCB1ZG1hYnVmICp1YnVmID0gYnVmLT5wcml2Owor CXBnb2ZmX3QgcGc7CisKKwlmb3IgKHBnID0gMDsgcGcgPCB1YnVmLT5wYWdlY291bnQ7IHBnKysp CisJCXB1dF9wYWdlKHVidWYtPnBhZ2VzW3BnXSk7CisJa2ZyZWUodWJ1Zi0+cGFnZXMpOworCWtm cmVlKHVidWYpOworfQorCitzdGF0aWMgdm9pZCAqa21hcF91ZG1hYnVmKHN0cnVjdCBkbWFfYnVm ICpidWYsIHVuc2lnbmVkIGxvbmcgcGFnZV9udW0pCit7CisJc3RydWN0IHVkbWFidWYgKnVidWYg PSBidWYtPnByaXY7CisJc3RydWN0IHBhZ2UgKnBhZ2UgPSB1YnVmLT5wYWdlc1twYWdlX251bV07 CisKKwlyZXR1cm4ga21hcChwYWdlKTsKK30KKworc3RhdGljIHZvaWQga3VubWFwX3VkbWFidWYo c3RydWN0IGRtYV9idWYgKmJ1ZiwgdW5zaWduZWQgbG9uZyBwYWdlX251bSwKKwkJCSAgIHZvaWQg KnZhZGRyKQoreworCWt1bm1hcCh2YWRkcik7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZG1hX2J1Zl9v cHMgdWRtYWJ1Zl9vcHMgPSB7CisJLm1hcF9kbWFfYnVmCSAgPSBtYXBfdWRtYWJ1ZiwKKwkudW5t YXBfZG1hX2J1ZgkgID0gdW5tYXBfdWRtYWJ1ZiwKKwkucmVsZWFzZQkgID0gcmVsZWFzZV91ZG1h YnVmLAorCS5tYXAJCSAgPSBrbWFwX3VkbWFidWYsCisJLnVubWFwCQkgID0ga3VubWFwX3VkbWFi dWYsCisJLm1tYXAJCSAgPSBtbWFwX3VkbWFidWYsCit9OworCisjZGVmaW5lIFNFQUxTX1dBTlRF RCAoRl9TRUFMX1NIUklOSykKKyNkZWZpbmUgU0VBTFNfREVOSUVEIChGX1NFQUxfV1JJVEUpCisK K3N0YXRpYyBsb25nIHVkbWFidWZfY3JlYXRlKHN0cnVjdCB1ZG1hYnVmX2NyZWF0ZV9saXN0ICpo ZWFkLAorCQkJICAgc3RydWN0IHVkbWFidWZfY3JlYXRlX2l0ZW0gKmxpc3QpCit7CisJREVGSU5F X0RNQV9CVUZfRVhQT1JUX0lORk8oZXhwX2luZm8pOworCXN0cnVjdCBmaWxlICptZW1mZCA9IE5V TEw7CisJc3RydWN0IHVkbWFidWYgKnVidWY7CisJc3RydWN0IGRtYV9idWYgKmJ1ZjsKKwlwZ29m Zl90IHBnb2ZmLCBwZ2NudCwgcGdpZHgsIHBnYnVmOworCXN0cnVjdCBwYWdlICpwYWdlOworCWlu dCBzZWFscywgcmV0ID0gLUVJTlZBTDsKKwl1MzIgaSwgZmxhZ3M7CisKKwl1YnVmID0ga3phbGxv YyhzaXplb2Yoc3RydWN0IHVkbWFidWYpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXVidWYpCisJCXJl dHVybiAtRU5PTUVNOworCisJZm9yIChpID0gMDsgaSA8IGhlYWQtPmNvdW50OyBpKyspIHsKKwkJ aWYgKCFJU19BTElHTkVEKGxpc3RbaV0ub2Zmc2V0LCBQQUdFX1NJWkUpKQorCQkJZ290byBlcnJf ZnJlZV91YnVmOworCQlpZiAoIUlTX0FMSUdORUQobGlzdFtpXS5zaXplLCBQQUdFX1NJWkUpKQor CQkJZ290byBlcnJfZnJlZV91YnVmOworCQl1YnVmLT5wYWdlY291bnQgKz0gbGlzdFtpXS5zaXpl ID4+IFBBR0VfU0hJRlQ7CisJfQorCXVidWYtPnBhZ2VzID0ga21hbGxvY19hcnJheSh1YnVmLT5w YWdlY291bnQsIHNpemVvZihzdHJ1Y3QgcGFnZSAqKSwKKwkJCQkgICAgR0ZQX0tFUk5FTCk7CisJ aWYgKCF1YnVmLT5wYWdlcykgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGVycl9mcmVlX3Vi dWY7CisJfQorCisJcGdidWYgPSAwOworCWZvciAoaSA9IDA7IGkgPCBoZWFkLT5jb3VudDsgaSsr KSB7CisJCW1lbWZkID0gZmdldChsaXN0W2ldLm1lbWZkKTsKKwkJaWYgKCFtZW1mZCkKKwkJCWdv dG8gZXJyX3B1dF9wYWdlczsKKwkJaWYgKCFzaG1lbV9tYXBwaW5nKGZpbGVfaW5vZGUobWVtZmQp LT5pX21hcHBpbmcpKQorCQkJZ290byBlcnJfcHV0X3BhZ2VzOworCQlzZWFscyA9IG1lbWZkX2Zj bnRsKG1lbWZkLCBGX0dFVF9TRUFMUywgMCk7CisJCWlmIChzZWFscyA9PSAtRUlOVkFMIHx8CisJ CSAgICAoc2VhbHMgJiBTRUFMU19XQU5URUQpICE9IFNFQUxTX1dBTlRFRCB8fAorCQkgICAgKHNl YWxzICYgU0VBTFNfREVOSUVEKSAhPSAwKQorCQkJZ290byBlcnJfcHV0X3BhZ2VzOworCQlwZ29m ZiA9IGxpc3RbaV0ub2Zmc2V0ID4+IFBBR0VfU0hJRlQ7CisJCXBnY250ID0gbGlzdFtpXS5zaXpl ICAgPj4gUEFHRV9TSElGVDsKKwkJZm9yIChwZ2lkeCA9IDA7IHBnaWR4IDwgcGdjbnQ7IHBnaWR4 KyspIHsKKwkJCXBhZ2UgPSBzaG1lbV9yZWFkX21hcHBpbmdfcGFnZSgKKwkJCQlmaWxlX2lub2Rl KG1lbWZkKS0+aV9tYXBwaW5nLCBwZ29mZiArIHBnaWR4KTsKKwkJCWlmIChJU19FUlIocGFnZSkp IHsKKwkJCQlyZXQgPSBQVFJfRVJSKHBhZ2UpOworCQkJCWdvdG8gZXJyX3B1dF9wYWdlczsKKwkJ CX0KKwkJCXVidWYtPnBhZ2VzW3BnYnVmKytdID0gcGFnZTsKKwkJfQorCQlmcHV0KG1lbWZkKTsK Kwl9CisJbWVtZmQgPSBOVUxMOworCisJZXhwX2luZm8ub3BzICA9ICZ1ZG1hYnVmX29wczsKKwll eHBfaW5mby5zaXplID0gdWJ1Zi0+cGFnZWNvdW50IDw8IFBBR0VfU0hJRlQ7CisJZXhwX2luZm8u cHJpdiA9IHVidWY7CisKKwlidWYgPSBkbWFfYnVmX2V4cG9ydCgmZXhwX2luZm8pOworCWlmIChJ U19FUlIoYnVmKSkgeworCQlyZXQgPSBQVFJfRVJSKGJ1Zik7CisJCWdvdG8gZXJyX3B1dF9wYWdl czsKKwl9CisKKwlmbGFncyA9IDA7CisJaWYgKGhlYWQtPmZsYWdzICYgVURNQUJVRl9GTEFHU19D TE9FWEVDKQorCQlmbGFncyB8PSBPX0NMT0VYRUM7CisJcmV0dXJuIGRtYV9idWZfZmQoYnVmLCBm bGFncyk7CisKK2Vycl9wdXRfcGFnZXM6CisJd2hpbGUgKHBnYnVmID4gMCkKKwkJcHV0X3BhZ2Uo dWJ1Zi0+cGFnZXNbLS1wZ2J1Zl0pOworZXJyX2ZyZWVfdWJ1ZjoKKwlmcHV0KG1lbWZkKTsKKwlr ZnJlZSh1YnVmLT5wYWdlcyk7CisJa2ZyZWUodWJ1Zik7CisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIGxvbmcgdWRtYWJ1Zl9pb2N0bF9jcmVhdGUoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVk IGxvbmcgYXJnKQoreworCXN0cnVjdCB1ZG1hYnVmX2NyZWF0ZSBjcmVhdGU7CisJc3RydWN0IHVk bWFidWZfY3JlYXRlX2xpc3QgaGVhZDsKKwlzdHJ1Y3QgdWRtYWJ1Zl9jcmVhdGVfaXRlbSBsaXN0 OworCisJaWYgKGNvcHlfZnJvbV91c2VyKCZjcmVhdGUsICh2b2lkIF9fdXNlciAqKWFyZywKKwkJ CSAgIHNpemVvZihzdHJ1Y3QgdWRtYWJ1Zl9jcmVhdGUpKSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisK KwloZWFkLmZsYWdzICA9IGNyZWF0ZS5mbGFnczsKKwloZWFkLmNvdW50ICA9IDE7CisJbGlzdC5t ZW1mZCAgPSBjcmVhdGUubWVtZmQ7CisJbGlzdC5vZmZzZXQgPSBjcmVhdGUub2Zmc2V0OworCWxp c3Quc2l6ZSAgID0gY3JlYXRlLnNpemU7CisKKwlyZXR1cm4gdWRtYWJ1Zl9jcmVhdGUoJmhlYWQs ICZsaXN0KTsKK30KKworc3RhdGljIGxvbmcgdWRtYWJ1Zl9pb2N0bF9jcmVhdGVfbGlzdChzdHJ1 Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhcmcpCit7CisJc3RydWN0IHVkbWFidWZfY3Jl YXRlX2xpc3QgaGVhZDsKKwlzdHJ1Y3QgdWRtYWJ1Zl9jcmVhdGVfaXRlbSAqbGlzdDsKKwlpbnQg cmV0ID0gLUVJTlZBTDsKKwl1MzIgbHNpemU7CisKKwlpZiAoY29weV9mcm9tX3VzZXIoJmhlYWQs ICh2b2lkIF9fdXNlciAqKWFyZywgc2l6ZW9mKGhlYWQpKSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisJ aWYgKGhlYWQuY291bnQgPiAxMDI0KQorCQlyZXR1cm4gLUVJTlZBTDsKKwlsc2l6ZSA9IHNpemVv ZihzdHJ1Y3QgdWRtYWJ1Zl9jcmVhdGVfaXRlbSkgKiBoZWFkLmNvdW50OworCWxpc3QgPSBtZW1k dXBfdXNlcigodm9pZCBfX3VzZXIgKikoYXJnICsgc2l6ZW9mKGhlYWQpKSwgbHNpemUpOworCWlm IChJU19FUlIobGlzdCkpCisJCXJldHVybiBQVFJfRVJSKGxpc3QpOworCisJcmV0ID0gdWRtYWJ1 Zl9jcmVhdGUoJmhlYWQsIGxpc3QpOworCWtmcmVlKGxpc3QpOworCXJldHVybiByZXQ7Cit9CisK K3N0YXRpYyBsb25nIHVkbWFidWZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGlu dCBpb2N0bCwKKwkJCSAgdW5zaWduZWQgbG9uZyBhcmcpCit7CisJbG9uZyByZXQ7CisKKwlzd2l0 Y2ggKGlvY3RsKSB7CisJY2FzZSBVRE1BQlVGX0NSRUFURToKKwkJcmV0ID0gdWRtYWJ1Zl9pb2N0 bF9jcmVhdGUoZmlscCwgYXJnKTsKKwkJYnJlYWs7CisJY2FzZSBVRE1BQlVGX0NSRUFURV9MSVNU OgorCQlyZXQgPSB1ZG1hYnVmX2lvY3RsX2NyZWF0ZV9saXN0KGZpbHAsIGFyZyk7CisJCWJyZWFr OworCWRlZmF1bHQ6CisJCXJldCA9IC1FSU5WQUw7CisJCWJyZWFrOworCX0KKwlyZXR1cm4gcmV0 OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB1ZG1hYnVmX2ZvcHMg PSB7CisJLm93bmVyCQk9IFRISVNfTU9EVUxFLAorCS51bmxvY2tlZF9pb2N0bCA9IHVkbWFidWZf aW9jdGwsCit9OworCitzdGF0aWMgc3RydWN0IG1pc2NkZXZpY2UgdWRtYWJ1Zl9taXNjID0gewor CS5taW5vciAgICAgICAgICA9IE1JU0NfRFlOQU1JQ19NSU5PUiwKKwkubmFtZSAgICAgICAgICAg PSAidWRtYWJ1ZiIsCisJLmZvcHMgICAgICAgICAgID0gJnVkbWFidWZfZm9wcywKK307CisKK3N0 YXRpYyBpbnQgX19pbml0IHVkbWFidWZfZGV2X2luaXQodm9pZCkKK3sKKwlyZXR1cm4gbWlzY19y ZWdpc3RlcigmdWRtYWJ1Zl9taXNjKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IHVkbWFidWZf ZGV2X2V4aXQodm9pZCkKK3sKKwltaXNjX2RlcmVnaXN0ZXIoJnVkbWFidWZfbWlzYyk7Cit9CisK K21vZHVsZV9pbml0KHVkbWFidWZfZGV2X2luaXQpCittb2R1bGVfZXhpdCh1ZG1hYnVmX2Rldl9l eGl0KQorCitNT0RVTEVfQVVUSE9SKCJHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4i KTsKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcv c2VsZnRlc3RzL2RyaXZlcnMvZG1hLWJ1Zi91ZG1hYnVmLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0 ZXN0cy9kcml2ZXJzL2RtYS1idWYvdWRtYWJ1Zi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLjM3NmIxZDY3MzAKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy90ZXN0aW5n L3NlbGZ0ZXN0cy9kcml2ZXJzL2RtYS1idWYvdWRtYWJ1Zi5jCkBAIC0wLDAgKzEsOTYgQEAKKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNp bmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdHJpbmcu aD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8bWFs bG9jLmg+CisKKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5o PgorI2luY2x1ZGUgPGxpbnV4L21lbWZkLmg+CisjaW5jbHVkZSA8bGludXgvdWRtYWJ1Zi5oPgor CisjZGVmaW5lIFRFU1RfUFJFRklYCSJkcml2ZXJzL2RtYS1idWYvdWRtYWJ1ZiIKKyNkZWZpbmUg TlVNX1BBR0VTICAgICAgIDQKKworc3RhdGljIGludCBtZW1mZF9jcmVhdGUoY29uc3QgY2hhciAq bmFtZSwgdW5zaWduZWQgaW50IGZsYWdzKQoreworCXJldHVybiBzeXNjYWxsKF9fTlJfbWVtZmRf Y3JlYXRlLCBuYW1lLCBmbGFncyk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCit7CisJc3RydWN0IHVkbWFidWZfY3JlYXRlIGNyZWF0ZTsKKwlpbnQgZGV2ZmQsIG1lbWZk LCBidWYsIHJldDsKKwlvZmZfdCBzaXplOworCXZvaWQgKm1lbTsKKworCWRldmZkID0gb3Blbigi L2Rldi91ZG1hYnVmIiwgT19SRFdSKTsKKwlpZiAoZGV2ZmQgPCAwKSB7CisJCXByaW50ZigiJXM6 IFtza2lwLG5vLXVkbWFidWZdXG4iLCBURVNUX1BSRUZJWCk7CisJCWV4aXQoNzcpOworCX0KKwor CW1lbWZkID0gbWVtZmRfY3JlYXRlKCJ1ZG1hYnVmLXRlc3QiLCBNRkRfQ0xPRVhFQyk7CisJaWYg KG1lbWZkIDwgMCkgeworCQlwcmludGYoIiVzOiBbc2tpcCxuby1tZW1mZF1cbiIsIFRFU1RfUFJF RklYKTsKKwkJZXhpdCg3Nyk7CisJfQorCisJc2l6ZSA9IGdldHBhZ2VzaXplKCkgKiBOVU1fUEFH RVM7CisJcmV0ID0gZnRydW5jYXRlKG1lbWZkLCBzaXplKTsKKwlpZiAocmV0ID09IC0xKSB7CisJ CXByaW50ZigiJXM6IFtGQUlMLG1lbWZkLXRydW5jYXRlXVxuIiwgVEVTVF9QUkVGSVgpOworCQll eGl0KDEpOworCX0KKworCW1lbXNldCgmY3JlYXRlLCAwLCBzaXplb2YoY3JlYXRlKSk7CisKKwkv KiBzaG91bGQgZmFpbCAob2Zmc2V0IG5vdCBwYWdlIGFsaWduZWQpICovCisJY3JlYXRlLm1lbWZk ICA9IG1lbWZkOworCWNyZWF0ZS5vZmZzZXQgPSBnZXRwYWdlc2l6ZSgpLzI7CisJY3JlYXRlLnNp emUgICA9IGdldHBhZ2VzaXplKCk7CisJYnVmID0gaW9jdGwoZGV2ZmQsIFVETUFCVUZfQ1JFQVRF LCAmY3JlYXRlKTsKKwlpZiAoYnVmID49IDApIHsKKwkJcHJpbnRmKCIlczogW0ZBSUwsdGVzdC0x XVxuIiwgVEVTVF9QUkVGSVgpOworCQlleGl0KDEpOworCX0KKworCS8qIHNob3VsZCBmYWlsIChz aXplIG5vdCBtdWx0aXBsZSBvZiBwYWdlKSAqLworCWNyZWF0ZS5tZW1mZCAgPSBtZW1mZDsKKwlj cmVhdGUub2Zmc2V0ID0gMDsKKwljcmVhdGUuc2l6ZSAgID0gZ2V0cGFnZXNpemUoKS8yOworCWJ1 ZiA9IGlvY3RsKGRldmZkLCBVRE1BQlVGX0NSRUFURSwgJmNyZWF0ZSk7CisJaWYgKGJ1ZiA+PSAw KSB7CisJCXByaW50ZigiJXM6IFtGQUlMLHRlc3QtMl1cbiIsIFRFU1RfUFJFRklYKTsKKwkJZXhp dCgxKTsKKwl9CisKKwkvKiBzaG91bGQgZmFpbCAobm90IG1lbWZkKSAqLworCWNyZWF0ZS5tZW1m ZCAgPSAwOyAvKiBzdGRpbiAqLworCWNyZWF0ZS5vZmZzZXQgPSAwOworCWNyZWF0ZS5zaXplICAg PSBzaXplOworCWJ1ZiA9IGlvY3RsKGRldmZkLCBVRE1BQlVGX0NSRUFURSwgJmNyZWF0ZSk7CisJ aWYgKGJ1ZiA+PSAwKSB7CisJCXByaW50ZigiJXM6IFtGQUlMLHRlc3QtM11cbiIsIFRFU1RfUFJF RklYKTsKKwkJZXhpdCgxKTsKKwl9CisKKwkvKiBzaG91bGQgd29yayAqLworCWNyZWF0ZS5tZW1m ZCAgPSBtZW1mZDsKKwljcmVhdGUub2Zmc2V0ID0gMDsKKwljcmVhdGUuc2l6ZSAgID0gc2l6ZTsK KwlidWYgPSBpb2N0bChkZXZmZCwgVURNQUJVRl9DUkVBVEUsICZjcmVhdGUpOworCWlmIChidWYg PCAwKSB7CisJCXByaW50ZigiJXM6IFtGQUlMLHRlc3QtNF1cbiIsIFRFU1RfUFJFRklYKTsKKwkJ ZXhpdCgxKTsKKwl9CisKKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiBva1xuIiwgVEVTVF9QUkVGSVgp OworCWNsb3NlKGJ1Zik7CisJY2xvc2UobWVtZmQpOworCWNsb3NlKGRldmZkKTsKKwlyZXR1cm4g MDsKK30KZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggYTViMjU2 YjI1OS4uMTFhOWIwNDI3NyAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5F UlMKQEAgLTE0OTM0LDYgKzE0OTM0LDE0IEBAIFM6CU1haW50YWluZWQKIEY6CURvY3VtZW50YXRp b24vZmlsZXN5c3RlbXMvdWRmLnR4dAogRjoJZnMvdWRmLwogCitVRE1BQlVGIERSSVZFUgorTToJ R2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2RtYS1idWYvdWRtYWJ1Zi5j CitGOglpbmNsdWRlL3VhcGkvbGludXgvdWRtYWJ1Zi5oCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0 ZXN0cy9kcml2ZXJzL2RtYS1idWYvdWRtYWJ1Zi5jCisKIFVEUkFXIFRBQkxFVAogTToJQmFzdGll biBOb2NlcmEgPGhhZGVzc0BoYWRlc3MubmV0PgogTDoJbGludXgtaW5wdXRAdmdlci5rZXJuZWwu b3JnCkBAIC0xNTM0Myw2ICsxNTM1MSwxNCBAQCBGOglhcmNoL3g4Ni91bS8KIEY6CWZzL2hvc3Rm cy8KIEY6CWZzL2hwcGZzLwogCitVU0VSU1BBQ0UgRE1BIEJVRkZFUiBEUklWRVIKK006CUdlcmQg SG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgorUzoJTWFpbnRhaW5lZAorTDoJZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZworRjoJZHJpdmVycy9kbWEtYnVmL3VkbWFidWYuYworRjoJ aW5jbHVkZS91YXBpL2xpbnV4L3VkbWFidWYuaAorVDoJZ2l0IGdpdDovL2Fub25naXQuZnJlZWRl c2t0b3Aub3JnL2RybS9kcm0tbWlzYworCiBVU0VSU1BBQ0UgSS9PIChVSU8pCiBNOglHcmVnIEty b2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgogUzoJTWFpbnRhaW5lZApk aWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL0tjb25maWcgYi9kcml2ZXJzL2RtYS1idWYvS2Nv bmZpZwppbmRleCBlZDNiNzg1YmFlLi4zMzgxMjllYjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Rt YS1idWYvS2NvbmZpZworKysgYi9kcml2ZXJzL2RtYS1idWYvS2NvbmZpZwpAQCAtMzAsNCArMzAs MTIgQEAgY29uZmlnIFNXX1NZTkMKIAkgIFdBUk5JTkc6IGltcHJvcGVyIHVzZSBvZiB0aGlzIGNh biByZXN1bHQgaW4gZGVhZGxvY2tpbmcga2VybmVsCiAJICBkcml2ZXJzIGZyb20gdXNlcnNwYWNl LiBJbnRlbmRlZCBmb3IgdGVzdCBhbmQgZGVidWcgb25seS4KIAorY29uZmlnIFVETUFCVUYKKwli b29sICJ1c2Vyc3BhY2UgZG1hYnVmIG1pc2MgZHJpdmVyIgorCWRlZmF1bHQgbgorCWRlcGVuZHMg b24gRE1BX1NIQVJFRF9CVUZGRVIKKwloZWxwCisJICBBIGRyaXZlciB0byBsZXQgdXNlcnNwYWNl IHR1cm4gbWVtZmQgcmVnaW9ucyBpbnRvIGRtYS1idWZzLgorCSAgUWVtdSBjYW4gdXNlIHRoaXMg dG8gY3JlYXRlIGhvc3QgZG1hYnVmcyBmb3IgZ3Vlc3QgZnJhbWVidWZmZXJzLgorCiBlbmRtZW51 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUgYi9kcml2ZXJzL2RtYS1idWYv TWFrZWZpbGUKaW5kZXggYzMzYmY4ODYzMS4uMDkxM2E2Y2NhYiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9kbWEtYnVmL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZQpAQCAtMSwz ICsxLDQgQEAKIG9iai15IDo9IGRtYS1idWYubyBkbWEtZmVuY2UubyBkbWEtZmVuY2UtYXJyYXku byByZXNlcnZhdGlvbi5vIHNlcW5vLWZlbmNlLm8KIG9iai0kKENPTkZJR19TWU5DX0ZJTEUpCQkr PSBzeW5jX2ZpbGUubwogb2JqLSQoQ09ORklHX1NXX1NZTkMpCQkrPSBzd19zeW5jLm8gc3luY19k ZWJ1Zy5vCitvYmotJChDT05GSUdfVURNQUJVRikJCSs9IHVkbWFidWYubwpkaWZmIC0tZ2l0IGEv dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlIGIvdG9vbHMv dGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQxNTRjM2Q3YWEKLS0tIC9kZXYvbnVsbAorKysgYi90 b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUKQEAgLTAsMCAr MSw1IEBACitDRkxBR1MgKz0gLUkuLi8uLi8uLi8uLi8uLi91c3IvaW5jbHVkZS8KKworVEVTVF9H RU5fUFJPR1MgOj0gdWRtYWJ1ZgorCitpbmNsdWRlIC4uLy4uL2xpYi5tawotLSAKMi45LjMKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=