From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gerd Hoffmann Subject: [PATCH v3] Add udmabuf misc device Date: Fri, 25 May 2018 16:08:08 +0200 Message-ID: <20180525140808.12714-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 0EA776E1BD for ; Fri, 25 May 2018 14:08:15 +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 , David Airlie , open list , "moderated list:DMA BUFFER SHARING FRAMEWORK" , Gerd Hoffmann , Shuah Khan , "open list:DMA BUFFER SHARING FRAMEWORK" List-Id: dri-devel@lists.freedesktop.org QSBkcml2ZXIgdG8gbGV0IHVzZXJzcGFjZSB0dXJuIG1lbWZkIHJlZ2lvbnMgaW50byBkbWEtYnVm cy4KClVzZSBjYXNlOiAgQWxsb3dzIHFlbXUgY3JlYXRlIGRtYWJ1ZnMgZm9yIHRoZSB2Z2EgZnJh bWVidWZmZXIgb3IKdmlydGlvLWdwdSByZXNzb3VyY2VzLiAgVGhlbiB0aGV5IGNhbiBiZSBwYXNz ZWQgYXJvdW5kIHRvIGRpc3BsYXkKdGhvc2UgZ3Vlc3QgdGhpbmdzIG9uIHRoZSBob3N0LiAgVG8g c3BpY2UgY2xpZW50IGZvciBjbGFzc2ljIGZ1bGwKZnJhbWVidWZmZXIgZGlzcGxheSwgYW5kIGhv cGVmdWxseSBzb21lIGRheSB0byB3YXlsYW5kIHNlcnZlciBmb3IKc2VhbWxlc3MgZ3Vlc3Qgd2lu ZG93IGRpc3BsYXkuCgpOb3RlOiBJbml0aWFsIHJldmlzaW9uIHdoaWNoIHN1cHBvcnRzIGEgc2lu Z2xlIHJlZ2lvbiBvbmx5IHNvIGl0CiAgICAgIGNhbid0IGhhbmRsZSB2aXJ0aW8tZ3B1IHJlc3Nv dXJjZXMgeWV0LgoKcWVtdSB0ZXN0IGJyYW5jaDoKICBodHRwczovL2dpdC5rcmF4ZWwub3JnL2Nn aXQvcWVtdS9sb2cvP2g9c2lyaXVzL3VkbWFidWYKCkNjOiBEYXZpZCBBaXJsaWUgPGFpcmxpZWRA bGludXguaWU+CkNjOiBUb21ldSBWaXpvc28gPHRvbWV1LnZpem9zb0Bjb2xsYWJvcmEuY29tPgpD YzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgpTaWduZWQtb2ZmLWJ5OiBHZXJkIEhv ZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KLS0tCiBpbmNsdWRlL3VhcGkvbGludXgvdWRtYWJ1 Zi5oICAgICAgICAgICAgICAgICAgICAgIHwgIDE5ICsrCiBkcml2ZXJzL2RtYS1idWYvdWRtYWJ1 Zi5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjQwICsrKysrKysrKysrKysrKysrKysrKysK IHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvZG1hLWJ1Zi91ZG1hYnVmLmMgfCAgOTUg KysrKysrKysrCiBkcml2ZXJzL2RtYS1idWYvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICA3ICsKIGRyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDEgKwogdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9kbWEtYnVmL01h a2VmaWxlICB8ICAgNSArCiA2IGZpbGVzIGNoYW5nZWQsIDM2NyBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgaW5jbHVkZS91YXBpL2xpbnV4L3VkbWFidWYuaAogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZG1hLWJ1Zi91ZG1hYnVmLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29s cy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL2RtYS1idWYvdWRtYWJ1Zi5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxl CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3VkbWFidWYuaCBiL2luY2x1ZGUvdWFw aS9saW51eC91ZG1hYnVmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u MmZiZTY5Y2YwNQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC91ZG1hYnVm LmgKQEAgLTAsMCArMSwxOSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAg V0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKyNpZm5kZWYgX1VBUElfTElOVVhfVURNQUJVRl9I CisjZGVmaW5lIF9VQVBJX0xJTlVYX1VETUFCVUZfSAorCisjaW5jbHVkZSA8bGludXgvdHlwZXMu aD4KKyNpbmNsdWRlIDxsaW51eC9pb2N0bC5oPgorCisjZGVmaW5lIFVETUFCVUZfRkxBR1NfQ0xP RVhFQwkweDAxCisKK3N0cnVjdCB1ZG1hYnVmX2NyZWF0ZSB7CisJX191MzIgbWVtZmQ7CisJX191 MzIgZmxhZ3M7CisJX191NjQgb2Zmc2V0OworCV9fdTY0IHNpemU7Cit9OworCisjZGVmaW5lIFVE TUFCVUZfQ1JFQVRFIF9JT1coMHg0MiwgMHgyMywgc3RydWN0IHVkbWFidWZfY3JlYXRlKQorCisj ZW5kaWYgLyogX1VBUElfTElOVVhfVURNQUJVRl9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Rt YS1idWYvdWRtYWJ1Zi5jIGIvZHJpdmVycy9kbWEtYnVmL3VkbWFidWYuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5mOTYwMGRjOTg1Ci0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9kbWEtYnVmL3VkbWFidWYuYwpAQCAtMCwwICsxLDI0MCBAQAorLyoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMiBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24uCisgKi8KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgv bW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgva2Vy bmVsLmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L21pc2NkZXZp Y2UuaD4KKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+CisjaW5jbHVkZSA8bGludXgvaGlnaG1l bS5oPgorI2luY2x1ZGUgPGxpbnV4L2NyZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9zaG1lbV9mcy5o PgorCisjaW5jbHVkZSA8dWFwaS9saW51eC91ZG1hYnVmLmg+CisKK3N0cnVjdCB1ZG1hYnVmIHsK KwlzdHJ1Y3QgZmlsZSAqZmlscDsKKwl1MzIgcGFnZWNvdW50OworCXN0cnVjdCBwYWdlICoqcGFn ZXM7Cit9OworCitzdGF0aWMgaW50IHVkbWFidWZfdm1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2 bWYpCit7CisJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEgPSB2bWYtPnZtYTsKKwlzdHJ1Y3Qg dWRtYWJ1ZiAqdWJ1ZiA9IHZtYS0+dm1fcHJpdmF0ZV9kYXRhOworCisJaWYgKFdBUk5fT04odm1m LT5wZ29mZiA+PSB1YnVmLT5wYWdlY291bnQpKQorCQlyZXR1cm4gVk1fRkFVTFRfU0lHQlVTOwor CisJdm1mLT5wYWdlID0gdWJ1Zi0+cGFnZXNbdm1mLT5wZ29mZl07CisJZ2V0X3BhZ2Uodm1mLT5w YWdlKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25z X3N0cnVjdCB1ZG1hYnVmX3ZtX29wcyA9IHsKKwkuZmF1bHQgPSB1ZG1hYnVmX3ZtX2ZhdWx0LAor fTsKKworc3RhdGljIGludCBtbWFwX3VkbWFidWYoc3RydWN0IGRtYV9idWYgKmJ1Ziwgc3RydWN0 IHZtX2FyZWFfc3RydWN0ICp2bWEpCit7CisJc3RydWN0IHVkbWFidWYgKnVidWYgPSBidWYtPnBy aXY7CisKKwlpZiAoKHZtYS0+dm1fZmxhZ3MgJiBWTV9TSEFSRUQpID09IDApCisJCXJldHVybiAt RUlOVkFMOworCisJdm1hLT52bV9vcHMgPSAmdWRtYWJ1Zl92bV9vcHM7CisJdm1hLT52bV9wcml2 YXRlX2RhdGEgPSB1YnVmOworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IHNnX3RhYmxl ICptYXBfdWRtYWJ1ZihzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdCwKKwkJCQkgICAgZW51 bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQoreworCXN0cnVjdCB1ZG1hYnVmICp1YnVm ID0gYXQtPmRtYWJ1Zi0+cHJpdjsKKwlzdHJ1Y3Qgc2dfdGFibGUgKnNnOworCisJc2cgPSBremFs bG9jKHNpemVvZigqc2cpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXNnKQorCQlnb3RvIGVycjE7CisJ aWYgKHNnX2FsbG9jX3RhYmxlX2Zyb21fcGFnZXMoc2csIHVidWYtPnBhZ2VzLCB1YnVmLT5wYWdl Y291bnQsCisJCQkJICAgICAgMCwgdWJ1Zi0+cGFnZWNvdW50IDw8IFBBR0VfU0hJRlQsCisJCQkJ ICAgICAgR0ZQX0tFUk5FTCkgPCAwKQorCQlnb3RvIGVycjI7CisJaWYgKCFkbWFfbWFwX3NnKGF0 LT5kZXYsIHNnLT5zZ2wsIHNnLT5uZW50cywgZGlyZWN0aW9uKSkKKwkJZ290byBlcnIzOworCisJ cmV0dXJuIHNnOworCitlcnIzOgorCXNnX2ZyZWVfdGFibGUoc2cpOworZXJyMjoKKwlrZnJlZShz Zyk7CitlcnIxOgorCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworfQorCitzdGF0aWMgdm9pZCB1 bm1hcF91ZG1hYnVmKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0LAorCQkJICBzdHJ1Y3Qg c2dfdGFibGUgKnNnLAorCQkJICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCit7 CisJc2dfZnJlZV90YWJsZShzZyk7CisJa2ZyZWUoc2cpOworfQorCitzdGF0aWMgdm9pZCByZWxl YXNlX3VkbWFidWYoc3RydWN0IGRtYV9idWYgKmJ1ZikKK3sKKwlzdHJ1Y3QgdWRtYWJ1ZiAqdWJ1 ZiA9IGJ1Zi0+cHJpdjsKKwlwZ29mZl90IHBnOworCisJZm9yIChwZyA9IDA7IHBnIDwgdWJ1Zi0+ cGFnZWNvdW50OyBwZysrKQorCQlwdXRfcGFnZSh1YnVmLT5wYWdlc1twZ10pOworCWZwdXQodWJ1 Zi0+ZmlscCk7CisJa2ZyZWUodWJ1Zi0+cGFnZXMpOworCWtmcmVlKHVidWYpOworfQorCitzdGF0 aWMgdm9pZCAqa21hcF9hdG9taWNfdWRtYWJ1ZihzdHJ1Y3QgZG1hX2J1ZiAqYnVmLCB1bnNpZ25l ZCBsb25nIHBhZ2VfbnVtKQoreworCXN0cnVjdCB1ZG1hYnVmICp1YnVmID0gYnVmLT5wcml2Owor CXN0cnVjdCBwYWdlICpwYWdlID0gdWJ1Zi0+cGFnZXNbcGFnZV9udW1dOworCisJcmV0dXJuIGtt YXBfYXRvbWljKHBhZ2UpOworfQorCitzdGF0aWMgdm9pZCAqa21hcF91ZG1hYnVmKHN0cnVjdCBk bWFfYnVmICpidWYsIHVuc2lnbmVkIGxvbmcgcGFnZV9udW0pCit7CisJc3RydWN0IHVkbWFidWYg KnVidWYgPSBidWYtPnByaXY7CisJc3RydWN0IHBhZ2UgKnBhZ2UgPSB1YnVmLT5wYWdlc1twYWdl X251bV07CisKKwlyZXR1cm4ga21hcChwYWdlKTsKK30KKworc3RhdGljIHN0cnVjdCBkbWFfYnVm X29wcyB1ZG1hYnVmX29wcyA9IHsKKwkubWFwX2RtYV9idWYJICA9IG1hcF91ZG1hYnVmLAorCS51 bm1hcF9kbWFfYnVmCSAgPSB1bm1hcF91ZG1hYnVmLAorCS5yZWxlYXNlCSAgPSByZWxlYXNlX3Vk bWFidWYsCisJLm1hcF9hdG9taWMJICA9IGttYXBfYXRvbWljX3VkbWFidWYsCisJLm1hcAkJICA9 IGttYXBfdWRtYWJ1ZiwKKwkubW1hcAkJICA9IG1tYXBfdWRtYWJ1ZiwKK307CisKK3N0YXRpYyBs b25nIHVkbWFidWZfaW9jdGxfY3JlYXRlKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBsb25n IGFyZykKK3sKKwlERUZJTkVfRE1BX0JVRl9FWFBPUlRfSU5GTyhleHBfaW5mbyk7CisJc3RydWN0 IHVkbWFidWZfY3JlYXRlIGNyZWF0ZTsKKwlzdHJ1Y3QgdWRtYWJ1ZiAqdWJ1ZjsKKwlzdHJ1Y3Qg ZG1hX2J1ZiAqYnVmOworCXBnb2ZmX3QgcGdvZmYsIHBnaWR4OworCXN0cnVjdCBwYWdlICpwYWdl OworCWludCByZXQgPSAtRUlOVkFMOworCXUzMiBmbGFnczsKKworCWlmIChjb3B5X2Zyb21fdXNl cigmY3JlYXRlLCAodm9pZCBfX3VzZXIgKilhcmcsCisJCQkgICBzaXplb2Yoc3RydWN0IHVkbWFi dWZfY3JlYXRlKSkpCisJCXJldHVybiAtRUZBVUxUOworCisJaWYgKCFJU19BTElHTkVEKGNyZWF0 ZS5vZmZzZXQsIFBBR0VfU0laRSkpCisJCXJldHVybiAtRUlOVkFMOworCWlmICghSVNfQUxJR05F RChjcmVhdGUuc2l6ZSwgUEFHRV9TSVpFKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwl1YnVmID0g a3phbGxvYyhzaXplb2Yoc3RydWN0IHVkbWFidWYpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXVidWYp CisJCXJldHVybiAtRU5PTUVNOworCisJdWJ1Zi0+ZmlscCA9IGZnZXQoY3JlYXRlLm1lbWZkKTsK KwlpZiAoIXVidWYtPmZpbHApCisJCWdvdG8gZXJyX2ZyZWVfdWJ1ZjsKKwlpZiAoIXNobWVtX21h cHBpbmcoZmlsZV9pbm9kZSh1YnVmLT5maWxwKS0+aV9tYXBwaW5nKSkKKwkJZ290byBlcnJfZnJl ZV91YnVmOworCisJdWJ1Zi0+cGFnZWNvdW50ID0gY3JlYXRlLnNpemUgPj4gUEFHRV9TSElGVDsK Kwl1YnVmLT5wYWdlcyA9IGttYWxsb2NfYXJyYXkodWJ1Zi0+cGFnZWNvdW50LCBzaXplb2Yoc3Ry dWN0IHBhZ2UqKSwKKwkJCQkgICAgR0ZQX0tFUk5FTCk7CisJaWYgKCF1YnVmLT5wYWdlcykgewor CQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGVycl9mcmVlX3VidWY7CisJfQorCisJcGdvZmYgPSBj cmVhdGUub2Zmc2V0ID4+IFBBR0VfU0hJRlQ7CisJZm9yIChwZ2lkeCA9IDA7IHBnaWR4IDwgdWJ1 Zi0+cGFnZWNvdW50OyBwZ2lkeCsrKSB7CisJCXBhZ2UgPSBzaG1lbV9yZWFkX21hcHBpbmdfcGFn ZSgKKwkJCWZpbGVfaW5vZGUodWJ1Zi0+ZmlscCktPmlfbWFwcGluZywgcGdvZmYgKyBwZ2lkeCk7 CisJCWlmIChJU19FUlIocGFnZSkpIHsKKwkJCXJldCA9IFBUUl9FUlIoYnVmKTsKKwkJCWdvdG8g ZXJyX3B1dF9wYWdlczsKKwkJfQorCQl1YnVmLT5wYWdlc1twZ2lkeF0gPSBwYWdlOworCX0KKwor CWV4cF9pbmZvLm9wcyAgPSAmdWRtYWJ1Zl9vcHM7CisJZXhwX2luZm8uc2l6ZSA9IHVidWYtPnBh Z2Vjb3VudCA8PCBQQUdFX1NISUZUOworCWV4cF9pbmZvLnByaXYgPSB1YnVmOworCisJYnVmID0g ZG1hX2J1Zl9leHBvcnQoJmV4cF9pbmZvKTsKKwlpZiAoSVNfRVJSKGJ1ZikpIHsKKwkJcmV0ID0g UFRSX0VSUihidWYpOworCQlnb3RvIGVycl9wdXRfcGFnZXM7CisJfQorCisJZmxhZ3MgPSAwOwor CWlmIChjcmVhdGUuZmxhZ3MgJiBVRE1BQlVGX0ZMQUdTX0NMT0VYRUMpCisJCWZsYWdzIHw9IE9f Q0xPRVhFQzsKKwlyZXR1cm4gZG1hX2J1Zl9mZChidWYsIGZsYWdzKTsKKworZXJyX3B1dF9wYWdl czoKKwl3aGlsZSAocGdpZHggPiAwKQorCQlwdXRfcGFnZSh1YnVmLT5wYWdlc1stLXBnaWR4XSk7 CitlcnJfZnJlZV91YnVmOgorCWZwdXQodWJ1Zi0+ZmlscCk7CisJa2ZyZWUodWJ1Zi0+cGFnZXMp OworCWtmcmVlKHVidWYpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBsb25nIHVkbWFidWZf aW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwKKwkJCSAgdW5zaWdu ZWQgbG9uZyBhcmcpCit7CisJbG9uZyByZXQ7CisKKwlzd2l0Y2ggKGlvY3RsKSB7CisJY2FzZSBV RE1BQlVGX0NSRUFURToKKwkJcmV0ID0gdWRtYWJ1Zl9pb2N0bF9jcmVhdGUoZmlscCwgYXJnKTsK KwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0ID0gLUVJTlZBTDsKKwkJYnJlYWs7CisJfQorCXJl dHVybiByZXQ7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHVkbWFi dWZfZm9wcyA9IHsKKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCisJLnVubG9ja2VkX2lvY3RsID0g dWRtYWJ1Zl9pb2N0bCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgbWlzY2RldmljZSB1ZG1hYnVmX21p c2MgPSB7CisJLm1pbm9yICAgICAgICAgID0gTUlTQ19EWU5BTUlDX01JTk9SLAorCS5uYW1lICAg ICAgICAgICA9ICJ1ZG1hYnVmIiwKKwkuZm9wcyAgICAgICAgICAgPSAmdWRtYWJ1Zl9mb3BzLAor fTsKKworc3RhdGljIGludCBfX2luaXQgdWRtYWJ1Zl9kZXZfaW5pdCh2b2lkKQoreworCXJldHVy biBtaXNjX3JlZ2lzdGVyKCZ1ZG1hYnVmX21pc2MpOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQg dWRtYWJ1Zl9kZXZfZXhpdCh2b2lkKQoreworCW1pc2NfZGVyZWdpc3RlcigmdWRtYWJ1Zl9taXNj KTsKK30KKworbW9kdWxlX2luaXQodWRtYWJ1Zl9kZXZfaW5pdCkKK21vZHVsZV9leGl0KHVkbWFi dWZfZGV2X2V4aXQpCisKK01PRFVMRV9BVVRIT1IoIkdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRo YXQuY29tPiIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOwpkaWZmIC0tZ2l0IGEvdG9vbHMv dGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9kbWEtYnVmL3VkbWFidWYuYyBiL3Rvb2xzL3Rlc3Rp bmcvc2VsZnRlc3RzL2RyaXZlcnMvZG1hLWJ1Zi91ZG1hYnVmLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uZDQ2YzU4YjBkZAotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xz L3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvZG1hLWJ1Zi91ZG1hYnVmLmMKQEAgLTAsMCArMSw5 NSBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8 dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNs dWRlIDxmY250bC5oPgorI2luY2x1ZGUgPG1hbGxvYy5oPgorCisjaW5jbHVkZSA8c3lzL2lvY3Rs Lmg+CisjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyNpbmNsdWRlIDxsaW51eC9tZW1mZC5oPgor I2luY2x1ZGUgPGxpbnV4L3VkbWFidWYuaD4KKworI2RlZmluZSBURVNUX1BSRUZJWAkiZHJpdmVy cy9kbWEtYnVmL3VkbWFidWYiCisjZGVmaW5lIE5VTV9QQUdFUyAgICAgICA0CisKK3N0YXRpYyBp bnQgbWVtZmRfY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGludCBmbGFncykKK3sK KwlyZXR1cm4gc3lzY2FsbChfX05SX21lbWZkX2NyZWF0ZSwgbmFtZSwgZmxhZ3MpOworfQorCitp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCXN0cnVjdCB1ZG1hYnVmX2NyZWF0 ZSBjcmVhdGU7CisJaW50IGRldmZkLCBtZW1mZCwgYnVmLCByZXQ7CisJb2ZmX3Qgc2l6ZTsKKwl2 b2lkICptZW07CisKKwlkZXZmZCA9IG9wZW4oIi9kZXYvdWRtYWJ1ZiIsIE9fUkRXUik7CisJaWYg KGRldmZkIDwgMCkgeworCQlwcmludGYoIiVzOiBbc2tpcCxuby11ZG1hYnVmXVxuIiwgVEVTVF9Q UkVGSVgpOworCQlleGl0KDc3KTsKKwl9CisKKwltZW1mZCA9IG1lbWZkX2NyZWF0ZSgidWRtYWJ1 Zi10ZXN0IiwgTUZEX0NMT0VYRUMpOworCWlmIChtZW1mZCA8IDApIHsKKwkJcHJpbnRmKCIlczog W3NraXAsbm8tbWVtZmRdXG4iLCBURVNUX1BSRUZJWCk7CisJCWV4aXQoNzcpOworCX0KKworCXNp emUgPSBnZXRwYWdlc2l6ZSgpICogTlVNX1BBR0VTOworCXJldCA9IGZ0cnVuY2F0ZShtZW1mZCwg c2l6ZSk7CisJaWYgKHJldCA9PSAtMSkgeworCQlwcmludGYoIiVzOiBbRkFJTCxtZW1mZC10cnVu Y2F0ZV1cbiIsIFRFU1RfUFJFRklYKTsKKwkJZXhpdCgxKTsKKwl9CisKKwltZW1zZXQoJmNyZWF0 ZSwgMCwgc2l6ZW9mKGNyZWF0ZSkpOworCisJLyogc2hvdWxkIGZhaWwgKG9mZnNldCBub3QgcGFn ZSBhbGlnbmVkKSAqLworCWNyZWF0ZS5tZW1mZCAgPSBtZW1mZDsKKwljcmVhdGUub2Zmc2V0ID0g Z2V0cGFnZXNpemUoKS8yOworCWNyZWF0ZS5zaXplICAgPSBnZXRwYWdlc2l6ZSgpOworCWJ1ZiA9 IGlvY3RsKGRldmZkLCBVRE1BQlVGX0NSRUFURSwgJmNyZWF0ZSk7CisJaWYgKGJ1ZiA+PSAwKSB7 CisJCXByaW50ZigiJXM6IFtGQUlMLHRlc3QtMV1cbiIsIFRFU1RfUFJFRklYKTsKKwkJZXhpdCgx KTsKKwl9CisKKwkvKiBzaG91bGQgZmFpbCAoc2l6ZSBub3QgbXVsdGlwbGUgb2YgcGFnZSkgKi8K KwljcmVhdGUubWVtZmQgID0gbWVtZmQ7CisJY3JlYXRlLm9mZnNldCA9IDA7CisJY3JlYXRlLnNp emUgICA9IGdldHBhZ2VzaXplKCkvMjsKKwlidWYgPSBpb2N0bChkZXZmZCwgVURNQUJVRl9DUkVB VEUsICZjcmVhdGUpOworCWlmIChidWYgPj0gMCkgeworCQlwcmludGYoIiVzOiBbRkFJTCx0ZXN0 LTJdXG4iLCBURVNUX1BSRUZJWCk7CisJCWV4aXQoMSk7CisJfQorCisJLyogc2hvdWxkIGZhaWwg KG5vdCBtZW1mZCkgKi8KKwljcmVhdGUubWVtZmQgID0gMDsgLyogc3RkaW4gKi8KKwljcmVhdGUu b2Zmc2V0ID0gMDsKKwljcmVhdGUuc2l6ZSAgID0gc2l6ZTsKKwlidWYgPSBpb2N0bChkZXZmZCwg VURNQUJVRl9DUkVBVEUsICZjcmVhdGUpOworCWlmIChidWYgPj0gMCkgeworCQlwcmludGYoIiVz OiBbRkFJTCx0ZXN0LTNdXG4iLCBURVNUX1BSRUZJWCk7CisJCWV4aXQoMSk7CisJfQorCisJLyog c2hvdWxkIHdvcmsgKi8KKwljcmVhdGUubWVtZmQgID0gbWVtZmQ7CisJY3JlYXRlLm9mZnNldCA9 IDA7CisJY3JlYXRlLnNpemUgICA9IHNpemU7CisJYnVmID0gaW9jdGwoZGV2ZmQsIFVETUFCVUZf Q1JFQVRFLCAmY3JlYXRlKTsKKwlpZiAoYnVmIDwgMCkgeworCQlwcmludGYoIiVzOiBbRkFJTCx0 ZXN0LTRdXG4iLCBURVNUX1BSRUZJWCk7CisJCWV4aXQoMSk7CisJfQorCisJZnByaW50ZihzdGRl cnIsICIlczogb2tcbiIsIFRFU1RfUFJFRklYKTsKKwljbG9zZShidWYpOworCWNsb3NlKG1lbWZk KTsKKwljbG9zZShkZXZmZCk7CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Rt YS1idWYvS2NvbmZpZyBiL2RyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnCmluZGV4IGVkM2I3ODViYWUu LjE5YmUzZWM2MmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnCisrKyBiL2Ry aXZlcnMvZG1hLWJ1Zi9LY29uZmlnCkBAIC0zMCw0ICszMCwxMSBAQCBjb25maWcgU1dfU1lOQwog CSAgV0FSTklORzogaW1wcm9wZXIgdXNlIG9mIHRoaXMgY2FuIHJlc3VsdCBpbiBkZWFkbG9ja2lu ZyBrZXJuZWwKIAkgIGRyaXZlcnMgZnJvbSB1c2Vyc3BhY2UuIEludGVuZGVkIGZvciB0ZXN0IGFu ZCBkZWJ1ZyBvbmx5LgogCitjb25maWcgVURNQUJVRgorCWJvb2wgInVzZXJzcGFjZSBkbWFidWYg bWlzYyBkcml2ZXIiCisJZGVmYXVsdCBuCisJZGVwZW5kcyBvbiBETUFfU0hBUkVEX0JVRkZFUgor CS0tLWhlbHAtLS0KKwkgIEEgZHJpdmVyIHRvIGxldCB1c2Vyc3BhY2UgdHVybiBpb3ZzIGludG8g ZG1hLWJ1ZnMuCisKIGVuZG1lbnUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmls ZSBiL2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZQppbmRleCBjMzNiZjg4NjMxLi4wOTEzYTZjY2Fi IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9kbWEt YnVmL01ha2VmaWxlCkBAIC0xLDMgKzEsNCBAQAogb2JqLXkgOj0gZG1hLWJ1Zi5vIGRtYS1mZW5j ZS5vIGRtYS1mZW5jZS1hcnJheS5vIHJlc2VydmF0aW9uLm8gc2Vxbm8tZmVuY2Uubwogb2JqLSQo Q09ORklHX1NZTkNfRklMRSkJCSs9IHN5bmNfZmlsZS5vCiBvYmotJChDT05GSUdfU1dfU1lOQykJ CSs9IHN3X3N5bmMubyBzeW5jX2RlYnVnLm8KK29iai0kKENPTkZJR19VRE1BQlVGKQkJKz0gdWRt YWJ1Zi5vCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL2RtYS1i dWYvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL2RtYS1idWYvTWFr ZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDE1NGMzZDdhYQot LS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvZG1hLWJ1 Zi9NYWtlZmlsZQpAQCAtMCwwICsxLDUgQEAKK0NGTEFHUyArPSAtSS4uLy4uLy4uLy4uLy4uL3Vz ci9pbmNsdWRlLworCitURVNUX0dFTl9QUk9HUyA6PSB1ZG1hYnVmCisKK2luY2x1ZGUgLi4vLi4v bGliLm1rCi0tIAoyLjkuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCg==