From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: =?UTF-8?q?=5BPATCH=5D=20drm=3A=20base=20prime/dma-buf=20support=20=28v5=29?= Date: Tue, 27 Mar 2012 10:47:46 +0100 Message-ID: <1332841666-10169-1-git-send-email-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTP id 03FF79E75C for ; Tue, 27 Mar 2012 02:50:53 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: linaro-mm-sig@lists.linaro.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClRoaXMgYWRkcyB0aGUgYmFz aWMgZHJtIGRtYS1idWYgaW50ZXJmYWNlIGxheWVyLCBjYWxsZWQgUFJJTUUsCgpUaGUgbWFpbiBB UElzIGV4cG9zZWQgdG8gdXNlcnNwYWNlIGFsbG93IHRyYW5zbGF0aW5nIGEgMzItYml0IG9iamVj dCBoYW5kbGUKdG8gYSBmaWxlIGRlc2NyaXB0b3IsIGFuZCBhIGZpbGUgZGVzY3JpcHRvciB0byBh IDMyLWJpdCBvYmplY3QgaGFuZGxlLgoKVGhlIGZsYWdzIHZhbHVlIGlzIGN1cnJlbnRseSBsaW1p dGVkIHRvIE9fQ0xPRVhFQy4KCkFja25vd2xlZGdlbWVudHM6CkRhbmllbCBWZXR0ZXI6IGxvdHMg b2YgcmV2aWV3ClJvYiBDbGFyazogY2xlYW5lZCB1cCBsb3RzIG9mIHRoZSBpbnRlcm5hbHMgYW5k IGRpZCBsaWZldGltZSByZXZpZXcuCgp2MjogcmVuYW1lIHNvbWUgZnVuY3Rpb25zIGFmdGVyIENo cmlzIHByZWZlcnJlZCBhIGdyZWVuIHNoZWQKZml4IElTX0VSUl9PUl9OVUxMIC0+IElTX0VSUgp2 MzogRml4IFZpbGxlIHBvaW50ZWQgb3V0IHVzaW5nIGJ1ZmZlciArIGttYWxsb2MKdjQ6IGFkZCBs b2NraW5nIGFzIHBlciBpY2tsZSByZXZpZXcKdjU6IGFsbG93IHJlLWV4cG9ydGluZyB0aGUgb3Jp Z2luYWwgZG1hLWJ1ZiAoRGFuaWVsKQoKU2lnbmVkLW9mZi1ieTogRGF2ZSBBaXJsaWUgPGFpcmxp ZWRAcmVkaGF0LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAgICAgfCAgICAxICsK IGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICB8ICAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9k cm1fZHJ2LmMgICB8ICAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2RybV9mb3BzLmMgIHwgICAgNyAr CiBkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5jICAgfCAgICA5ICsrCiBkcml2ZXJzL2dwdS9kcm0v ZHJtX3ByaW1lLmMgfCAgMjk5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIGluY2x1ZGUvZHJtL2RybS5oICAgICAgICAgICB8ICAgMTQgKystCiBpbmNsdWRlL2Ry bS9kcm1QLmggICAgICAgICAgfCAgIDYyICsrKysrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCAzOTYg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vZHJtX3ByaW1lLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZp ZyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCmluZGV4IGNjMTE0ODguLmUzNTRiYzAgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9LY29u ZmlnCkBAIC05LDYgKzksNyBAQCBtZW51Y29uZmlnIERSTQogCWRlcGVuZHMgb24gKEFHUCB8fCBB R1A9bikgJiYgIUVNVUxBVEVEX0NNUFhDSEcgJiYgTU1VCiAJc2VsZWN0IEkyQwogCXNlbGVjdCBJ MkNfQUxHT0JJVAorCXNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUgogCWhlbHAKIAkgIEtlcm5lbC1s ZXZlbCBzdXBwb3J0IGZvciB0aGUgRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZSAoRFJJ KQogCSAgaW50cm9kdWNlZCBpbiBYRnJlZTg2IDQuMC4gSWYgeW91IHNheSBZIGhlcmUsIHlvdSBu ZWVkIHRvIHNlbGVjdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJp dmVycy9ncHUvZHJtL01ha2VmaWxlCmluZGV4IGE4NTg1MzIuLmMyMGRhNWIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUK QEAgLTEyLDcgKzEyLDcgQEAgZHJtLXkgICAgICAgOj0JZHJtX2F1dGgubyBkcm1fYnVmZmVyLm8g ZHJtX2J1ZnMubyBkcm1fY2FjaGUubyBcCiAJCWRybV9wbGF0Zm9ybS5vIGRybV9zeXNmcy5vIGRy bV9oYXNodGFiLm8gZHJtX21tLm8gXAogCQlkcm1fY3J0Yy5vIGRybV9tb2Rlcy5vIGRybV9lZGlk Lm8gXAogCQlkcm1faW5mby5vIGRybV9kZWJ1Z2ZzLm8gZHJtX2VuY29kZXJfc2xhdmUubyBcCi0J CWRybV90cmFjZV9wb2ludHMubyBkcm1fZ2xvYmFsLm8KKwkJZHJtX3RyYWNlX3BvaW50cy5vIGRy bV9nbG9iYWwubyBkcm1fcHJpbWUubwogCiBkcm0tJChDT05GSUdfQ09NUEFUKSArPSBkcm1faW9j MzIubwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jIGIvZHJpdmVycy9n cHUvZHJtL2RybV9kcnYuYwppbmRleCAwYjY1ZmJjLi42MTE2ZTNiIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMKQEAg LTEzNiw2ICsxMzYsMTAgQEAgc3RhdGljIHN0cnVjdCBkcm1faW9jdGxfZGVzYyBkcm1faW9jdGxz W10gPSB7CiAJRFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfR0VNX09QRU4sIGRybV9nZW1fb3Blbl9p b2N0bCwgRFJNX0FVVEh8RFJNX1VOTE9DS0VEKSwKIAogCURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RM X01PREVfR0VUUkVTT1VSQ0VTLCBkcm1fbW9kZV9nZXRyZXNvdXJjZXMsIERSTV9DT05UUk9MX0FM TE9XfERSTV9VTkxPQ0tFRCksCisKKwlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9QUklNRV9IQU5E TEVfVE9fRkQsIGRybV9wcmltZV9oYW5kbGVfdG9fZmRfaW9jdGwsIERSTV9BVVRIfERSTV9VTkxP Q0tFRCksCisJRFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfUFJJTUVfRkRfVE9fSEFORExFLCBkcm1f cHJpbWVfZmRfdG9faGFuZGxlX2lvY3RsLCBEUk1fQVVUSHxEUk1fVU5MT0NLRUQpLAorCiAJRFJN X0lPQ1RMX0RFRihEUk1fSU9DVExfTU9ERV9HRVRQTEFORVJFU09VUkNFUywgZHJtX21vZGVfZ2V0 cGxhbmVfcmVzLCBEUk1fTUFTVEVSfERSTV9DT05UUk9MX0FMTE9XfERSTV9VTkxPQ0tFRCksCiAJ RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfTU9ERV9HRVRDUlRDLCBkcm1fbW9kZV9nZXRjcnRjLCBE Uk1fQ09OVFJPTF9BTExPV3xEUk1fVU5MT0NLRUQpLAogCURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RM X01PREVfU0VUQ1JUQywgZHJtX21vZGVfc2V0Y3J0YywgRFJNX01BU1RFUnxEUk1fQ09OVFJPTF9B TExPV3xEUk1fVU5MT0NLRUQpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mb3Bz LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvcHMuYwppbmRleCA3MzQ4YTNkLi5jZGZiZjI3IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvcHMuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2ZvcHMuYwpAQCAtMjcxLDYgKzI3MSw5IEBAIHN0YXRpYyBpbnQgZHJtX29wZW5faGVs cGVyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwLAogCWlmIChkZXYtPmRy aXZlci0+ZHJpdmVyX2ZlYXR1cmVzICYgRFJJVkVSX0dFTSkKIAkJZHJtX2dlbV9vcGVuKGRldiwg cHJpdik7CiAKKwlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9QUklNRSkp CisJCWRybV9wcmltZV9pbml0X2ZpbGVfcHJpdmF0ZSgmcHJpdi0+cHJpbWUpOworCiAJaWYgKGRl di0+ZHJpdmVyLT5vcGVuKSB7CiAJCXJldCA9IGRldi0+ZHJpdmVyLT5vcGVuKGRldiwgcHJpdik7 CiAJCWlmIChyZXQgPCAwKQpAQCAtNTcxLDYgKzU3NCwxMCBAQCBpbnQgZHJtX3JlbGVhc2Uoc3Ry dWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbHApCiAKIAlpZiAoZGV2LT5kcml2ZXIt PnBvc3RjbG9zZSkKIAkJZGV2LT5kcml2ZXItPnBvc3RjbG9zZShkZXYsIGZpbGVfcHJpdik7CisK KwlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9QUklNRSkpCisJCWRybV9w cmltZV9kZXN0cm95X2ZpbGVfcHJpdmF0ZSgmZmlsZV9wcml2LT5wcmltZSk7CisKIAlrZnJlZShm aWxlX3ByaXYpOwogCiAJLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5jCmluZGV4IDBlZjM1OGUuLjgzMTE0YjUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9nZW0uYwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPGxpbnV4L21tYW4uaD4KICNpbmNs dWRlIDxsaW51eC9wYWdlbWFwLmg+CiAjaW5jbHVkZSA8bGludXgvc2htZW1fZnMuaD4KKyNpbmNs dWRlIDxsaW51eC9kbWEtYnVmLmg+CiAjaW5jbHVkZSAiZHJtUC5oIgogCiAvKiogQGZpbGUgZHJt X2dlbS5jCkBAIC0yMzIsNiArMjMzLDEwIEBAIGRybV9nZW1faGFuZGxlX2RlbGV0ZShzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbHAsIHUzMiBoYW5kbGUpCiAJaWRyX3JlbW92ZSgmZmlscC0+b2JqZWN0X2lk ciwgaGFuZGxlKTsKIAlzcGluX3VubG9jaygmZmlscC0+dGFibGVfbG9jayk7CiAKKwlpZiAob2Jq LT5pbXBvcnRfYXR0YWNoKQorCQlkcm1fcHJpbWVfcmVtb3ZlX2ltcG9ydGVkX2J1Zl9oYW5kbGUo JmZpbHAtPnByaW1lLAorCQkJCW9iai0+aW1wb3J0X2F0dGFjaC0+ZG1hYnVmKTsKKwogCWlmIChk ZXYtPmRyaXZlci0+Z2VtX2Nsb3NlX29iamVjdCkKIAkJZGV2LT5kcml2ZXItPmdlbV9jbG9zZV9v YmplY3Qob2JqLCBmaWxwKTsKIAlkcm1fZ2VtX29iamVjdF9oYW5kbGVfdW5yZWZlcmVuY2VfdW5s b2NrZWQob2JqKTsKQEAgLTUyNyw2ICs1MzIsMTAgQEAgZHJtX2dlbV9vYmplY3RfcmVsZWFzZV9o YW5kbGUoaW50IGlkLCB2b2lkICpwdHIsIHZvaWQgKmRhdGEpCiAJc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmogPSBwdHI7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+ZGV2OwogCisJ aWYgKG9iai0+aW1wb3J0X2F0dGFjaCkKKwkJZHJtX3ByaW1lX3JlbW92ZV9pbXBvcnRlZF9idWZf aGFuZGxlKCZmaWxlX3ByaXYtPnByaW1lLAorCQkJCW9iai0+aW1wb3J0X2F0dGFjaC0+ZG1hYnVm KTsKKwogCWlmIChkZXYtPmRyaXZlci0+Z2VtX2Nsb3NlX29iamVjdCkKIAkJZGV2LT5kcml2ZXIt PmdlbV9jbG9zZV9vYmplY3Qob2JqLCBmaWxlX3ByaXYpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX3ByaW1lLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ByaW1lLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY1NjZlYgotLS0gL2Rldi9udWxsCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYwpAQCAtMCwwICsxLDI5OSBAQAorLyoKKyAqIENv cHlyaWdodCDCqSAyMDEyIFJlZCBIYXQKKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi U29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICog YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z IHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAq IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S CisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMg T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig T1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBU SEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqICAgICAgRGF2ZSBBaXJsaWUgPGFpcmxp ZWRAcmVkaGF0LmNvbT4KKyAqICAgICAgUm9iIENsYXJrIDxyb2IuY2xhcmtAbGluYXJvLm9yZz4K KyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5oPgorI2luY2x1ZGUgPGxpbnV4L2Rt YS1idWYuaD4KKyNpbmNsdWRlICJkcm1QLmgiCisKKy8qCisgKiBETUEtQlVGL0dFTSBPYmplY3Qg cmVmZXJlbmNlcyBhbmQgbGlmZXRpbWUgb3ZlcnZpZXc6CisgKgorICogT24gdGhlIGV4cG9ydCB0 aGUgZG1hX2J1ZiBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgZXhwb3J0aW5nIEdFTQorICogb2Jq ZWN0LiBJdCB0YWtlcyB0aGlzIHJlZmVyZW5jZSBpbiBoYW5kbGVfdG9fZmRfaW9jdGwsIHdoZW4g aXQKKyAqIGZpcnN0IGNhbGxzIC5wcmltZV9leHBvcnQgYW5kIHN0b3JlcyB0aGUgZXhwb3J0aW5n IEdFTSBvYmplY3QgaW4KKyAqIHRoZSBkbWFfYnVmIHByaXYuIFRoaXMgcmVmZXJlbmNlIGlzIHJl bGVhc2VkIHdoZW4gdGhlIGRtYV9idWYKKyAqIG9iamVjdCBnb2VzIGF3YXkgaW4gdGhlIGRyaXZl ciAucmVsZWFzZSBmdW5jdGlvbi4KKyAqCisgKiBPbiB0aGUgaW1wb3J0IHRoZSBpbXBvcnRpbmcg R0VNIG9iamVjdCBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUKKyAqIGRtYV9idWYgKHdoaWNoIGlu IHR1cm4gaG9sZHMgYSByZWYgdG8gdGhlIGV4cG9ydGluZyBHRU0gb2JqZWN0KS4KKyAqIEl0IHRh a2VzIHRoYXQgcmVmZXJlbmNlIGluIHRoZSBmZF90b19oYW5kbGUgaW9jdGwuCisgKiBJdCBjYWxs cyBkbWFfYnVmX2dldCwgY3JlYXRlcyBhbiBhdHRhY2htZW50IHRvIGl0IGFuZCBzdG9yZXMgdGhl CisgKiBhdHRhY2htZW50IGluIHRoZSBHRU0gb2JqZWN0LiBXaGVuIHRoaXMgYXR0YWNobWVudCBp cyBkZXN0cm95ZWQKKyAqIHdoZW4gdGhlIGltcG9ydGVkIG9iamVjdCBpcyBkZXN0cm95ZWQsIHdl IHJlbW92ZSB0aGUgYXR0YWNobWVudAorICogYW5kIGRyb3AgdGhlIHJlZmVyZW5jZSB0byB0aGUg ZG1hX2J1Zi4KKyAqCisgKiBUaHVzIHRoZSBjaGFpbiBvZiByZWZlcmVuY2VzIGFsd2F5cyBmbG93 cyBpbiBvbmUgZGlyZWN0aW9uCisgKiAoYXZvaWRpbmcgbG9vcHMpOiBpbXBvcnRpbmdfZ2VtIC0+ IGRtYWJ1ZiAtPiBleHBvcnRpbmdfZ2VtCisgKi8KKworc3RydWN0IGRybV9wcmltZV9tZW1iZXIg eworCXN0cnVjdCBsaXN0X2hlYWQgZW50cnk7CisJc3RydWN0IGRtYV9idWYgKmRtYV9idWY7CisJ dWludDMyX3QgaGFuZGxlOworfTsKKworaW50IGRybV9nZW1fcHJpbWVfaGFuZGxlX3RvX2ZkKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LCB1aW50 MzJfdCBoYW5kbGUsIHVpbnQzMl90IGZsYWdzLAorCQlpbnQgKnByaW1lX2ZkKQoreworCXN0cnVj dCBkcm1fZ2VtX29iamVjdCAqb2JqOworCXZvaWQgKmJ1ZjsKKworCW9iaiA9IGRybV9nZW1fb2Jq ZWN0X2xvb2t1cChkZXYsIGZpbGVfcHJpdiwgaGFuZGxlKTsKKwlpZiAoIW9iaikKKwkJcmV0dXJu IC1FTk9FTlQ7CisKKwltdXRleF9sb2NrKCZmaWxlX3ByaXYtPnByaW1lLmxvY2spOworCS8qIHJl LWV4cG9ydCB0aGUgb3JpZ2luYWwgaW1wb3J0ZWQgb2JqZWN0ICovCisJaWYgKG9iai0+aW1wb3J0 X2F0dGFjaCkgeworCQlnZXRfZG1hX2J1ZihvYmotPmltcG9ydF9hdHRhY2gtPmRtYWJ1Zik7CisJ CSpwcmltZV9mZCA9IGRtYV9idWZfZmQob2JqLT5pbXBvcnRfYXR0YWNoLT5kbWFidWYsIGZsYWdz KTsKKwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQob2JqKTsKKwkJbXV0ZXhf dW5sb2NrKCZmaWxlX3ByaXYtPnByaW1lLmxvY2spOworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAo b2JqLT5leHBvcnRfZG1hX2J1ZikgeworCQlnZXRfZG1hX2J1ZihvYmotPmV4cG9ydF9kbWFfYnVm KTsKKwkJKnByaW1lX2ZkID0gZG1hX2J1Zl9mZChvYmotPmV4cG9ydF9kbWFfYnVmLCBmbGFncyk7 CisJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKG9iaik7CisJfSBlbHNlIHsK KwkJYnVmID0gZGV2LT5kcml2ZXItPmdlbV9wcmltZV9leHBvcnQoZGV2LCBvYmosIGZsYWdzKTsK KwkJaWYgKElTX0VSUihidWYpKSB7CisJCQkvKiBub3JtYWxseSB0aGUgY3JlYXRlZCBkbWEtYnVm IHRha2VzIG93bmVyc2hpcCBvZiB0aGUgcmVmLAorCQkJICogYnV0IGlmIHRoYXQgZmFpbHMgdGhl biBkcm9wIHRoZSByZWYKKwkJCSAqLworCQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5s b2NrZWQob2JqKTsKKwkJCW11dGV4X3VubG9jaygmZmlsZV9wcml2LT5wcmltZS5sb2NrKTsKKwkJ CXJldHVybiBQVFJfRVJSKGJ1Zik7CisJCX0KKwkJb2JqLT5leHBvcnRfZG1hX2J1ZiA9IGJ1ZjsK KwkJKnByaW1lX2ZkID0gZG1hX2J1Zl9mZChidWYsIGZsYWdzKTsKKwl9CisJbXV0ZXhfdW5sb2Nr KCZmaWxlX3ByaXYtPnByaW1lLmxvY2spOworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTChk cm1fZ2VtX3ByaW1lX2hhbmRsZV90b19mZCk7CisKK2ludCBkcm1fZ2VtX3ByaW1lX2ZkX3RvX2hh bmRsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJp diwgaW50IHByaW1lX2ZkLCB1aW50MzJfdCAqaGFuZGxlKQoreworCXN0cnVjdCBkbWFfYnVmICpk bWFfYnVmOworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOworCWludCByZXQ7CisKKwlkbWFf YnVmID0gZG1hX2J1Zl9nZXQocHJpbWVfZmQpOworCWlmIChJU19FUlIoZG1hX2J1ZikpCisJCXJl dHVybiBQVFJfRVJSKGRtYV9idWYpOworCisJbXV0ZXhfbG9jaygmZmlsZV9wcml2LT5wcmltZS5s b2NrKTsKKworCXJldCA9IGRybV9wcmltZV9sb29rdXBfaW1wb3J0ZWRfYnVmX2hhbmRsZSgmZmls ZV9wcml2LT5wcmltZSwKKwkJCWRtYV9idWYsIGhhbmRsZSk7CisJaWYgKCFyZXQpIHsKKwkJcmV0 ID0gMDsKKwkJZ290byBvdXRfcHV0OworCX0KKworCS8qIG5ldmVyIHNlZW4gdGhpcyBvbmUsIG5l ZWQgdG8gaW1wb3J0ICovCisJb2JqID0gZGV2LT5kcml2ZXItPmdlbV9wcmltZV9pbXBvcnQoZGV2 LCBkbWFfYnVmKTsKKwlpZiAoSVNfRVJSKG9iaikpIHsKKwkJcmV0ID0gUFRSX0VSUihvYmopOwor CQlnb3RvIG91dF9wdXQ7CisJfQorCisJcmV0ID0gZHJtX2dlbV9oYW5kbGVfY3JlYXRlKGZpbGVf cHJpdiwgb2JqLCBoYW5kbGUpOworCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2Vk KG9iaik7CisJaWYgKHJldCkKKwkJZ290byBvdXRfcHV0OworCisJcmV0ID0gZHJtX3ByaW1lX2Fk ZF9pbXBvcnRlZF9idWZfaGFuZGxlKCZmaWxlX3ByaXYtPnByaW1lLAorCQkJZG1hX2J1ZiwgKmhh bmRsZSk7CisJaWYgKHJldCkKKwkJZ290byBmYWlsOworCisJbXV0ZXhfdW5sb2NrKCZmaWxlX3By aXYtPnByaW1lLmxvY2spOworCXJldHVybiAwOworCitmYWlsOgorCS8qIGhtbSwgaWYgZHJpdmVy IGF0dGFjaGVkLCB3ZSBhcmUgcmVseWluZyBvbiB0aGUgZnJlZS1vYmplY3QgcGF0aAorCSAqIHRv IGRldGFjaC4uIHdoaWNoIHNlZW1zIG9rLi4KKwkgKi8KKwlkcm1fZ2VtX29iamVjdF9oYW5kbGVf dW5yZWZlcmVuY2VfdW5sb2NrZWQob2JqKTsKK291dF9wdXQ6CisJZG1hX2J1Zl9wdXQoZG1hX2J1 Zik7CisJbXV0ZXhfdW5sb2NrKCZmaWxlX3ByaXYtPnByaW1lLmxvY2spOworCXJldHVybiByZXQ7 Cit9CitFWFBPUlRfU1lNQk9MKGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlKTsKKworaW50IGRy bV9wcmltZV9oYW5kbGVfdG9fZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKKwkJCQkgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCit7CisJc3RydWN0IGRybV9w cmltZV9oYW5kbGUgKmFyZ3MgPSBkYXRhOworCXVpbnQzMl90IGZsYWdzOworCisJaWYgKCFkcm1f Y29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1BSSU1FKSkKKwkJcmV0dXJuIC1FSU5WQUw7 CisKKwlpZiAoIWRldi0+ZHJpdmVyLT5wcmltZV9oYW5kbGVfdG9fZmQpCisJCXJldHVybiAtRU5P U1lTOworCisJLyogY2hlY2sgZmxhZ3MgYXJlIHZhbGlkICovCisJaWYgKGFyZ3MtPmZsYWdzICYg fkRSTV9DTE9FWEVDKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIHdlIG9ubHkgd2FudCB0byBw YXNzIERSTV9DTE9FWEVDIHdoaWNoIGlzID09IE9fQ0xPRVhFQyAqLworCWZsYWdzID0gYXJncy0+ ZmxhZ3MgJiBEUk1fQ0xPRVhFQzsKKworCXJldHVybiBkZXYtPmRyaXZlci0+cHJpbWVfaGFuZGxl X3RvX2ZkKGRldiwgZmlsZV9wcml2LAorCQkJYXJncy0+aGFuZGxlLCBmbGFncywgJmFyZ3MtPmZk KTsKK30KKworaW50IGRybV9wcmltZV9mZF90b19oYW5kbGVfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCQkgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCit7 CisJc3RydWN0IGRybV9wcmltZV9oYW5kbGUgKmFyZ3MgPSBkYXRhOworCisJaWYgKCFkcm1fY29y ZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1BSSU1FKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwlpZiAoIWRldi0+ZHJpdmVyLT5wcmltZV9mZF90b19oYW5kbGUpCisJCXJldHVybiAtRU5PU1lT OworCisJcmV0dXJuIGRldi0+ZHJpdmVyLT5wcmltZV9mZF90b19oYW5kbGUoZGV2LCBmaWxlX3By aXYsCisJCQlhcmdzLT5mZCwgJmFyZ3MtPmhhbmRsZSk7Cit9CisKKy8qCisgKiBkcm1fcHJpbWVf cGFnZXNfdG9fc2cKKyAqCisgKiB0aGlzIGhlbHBlciBjcmVhdGVzIGFuIHNnIHRhYmxlIG9iamVj dCBmcm9tIGEgc2V0IG9mIHBhZ2VzCisgKiB0aGUgZHJpdmVyIGlzIHJlc3BvbnNpYmxlIGZvciBt YXBwaW5nIHRoZSBwYWdlcyBpbnRvIHRoZQorICogaW1wb3J0ZXJzIGFkZHJlc3Mgc3BhY2UKKyAq Lworc3RydWN0IHNnX3RhYmxlICpkcm1fcHJpbWVfcGFnZXNfdG9fc2coc3RydWN0IHBhZ2UgKipw YWdlcywgaW50IG5yX3BhZ2VzKQoreworCXN0cnVjdCBzZ190YWJsZSAqc2cgPSBOVUxMOworCXN0 cnVjdCBzY2F0dGVybGlzdCAqaXRlcjsKKwlpbnQgaTsKKwlpbnQgcmV0OworCisJc2cgPSBrbWFs bG9jKHNpemVvZihzdHJ1Y3Qgc2dfdGFibGUpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXNnKQorCQln b3RvIG91dDsKKworCXJldCA9IHNnX2FsbG9jX3RhYmxlKHNnLCBucl9wYWdlcywgR0ZQX0tFUk5F TCk7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwlmb3JfZWFjaF9zZyhzZy0+c2dsLCBpdGVy LCBucl9wYWdlcywgaSkKKwkJc2dfc2V0X3BhZ2UoaXRlciwgcGFnZXNbaV0sIFBBR0VfU0laRSwg MCk7CisKKwlyZXR1cm4gc2c7CitvdXQ6CisJa2ZyZWUoc2cpOworCXJldHVybiBOVUxMOworfQor RVhQT1JUX1NZTUJPTChkcm1fcHJpbWVfcGFnZXNfdG9fc2cpOworCisvKiBoZWxwZXIgZnVuY3Rp b24gdG8gY2xlYW51cCBhIEdFTS9wcmltZSBvYmplY3QgKi8KK3ZvaWQgZHJtX3ByaW1lX2dlbV9k ZXN0cm95KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3Qgc2dfdGFibGUgKnNnKQor eworCXN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaDsKKwlzdHJ1Y3QgZG1hX2J1ZiAq ZG1hX2J1ZjsKKwlhdHRhY2ggPSBvYmotPmltcG9ydF9hdHRhY2g7CisJaWYgKHNnKQorCQlkbWFf YnVmX3VubWFwX2F0dGFjaG1lbnQoYXR0YWNoLCBzZywgRE1BX0JJRElSRUNUSU9OQUwpOworCWRt YV9idWYgPSBhdHRhY2gtPmRtYWJ1ZjsKKwlkbWFfYnVmX2RldGFjaChhdHRhY2gtPmRtYWJ1Ziwg YXR0YWNoKTsKKwkvKiByZW1vdmUgdGhlIHJlZmVyZW5jZSAqLworCWRtYV9idWZfcHV0KGRtYV9i dWYpOworfQorRVhQT1JUX1NZTUJPTChkcm1fcHJpbWVfZ2VtX2Rlc3Ryb3kpOworCit2b2lkIGRy bV9wcmltZV9pbml0X2ZpbGVfcHJpdmF0ZShzdHJ1Y3QgZHJtX3ByaW1lX2ZpbGVfcHJpdmF0ZSAq cHJpbWVfZnByaXYpCit7CisJSU5JVF9MSVNUX0hFQUQoJnByaW1lX2Zwcml2LT5oZWFkKTsKKwlt dXRleF9pbml0KCZwcmltZV9mcHJpdi0+bG9jayk7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9wcmlt ZV9pbml0X2ZpbGVfcHJpdmF0ZSk7CisKK3ZvaWQgZHJtX3ByaW1lX2Rlc3Ryb3lfZmlsZV9wcml2 YXRlKHN0cnVjdCBkcm1fcHJpbWVfZmlsZV9wcml2YXRlICpwcmltZV9mcHJpdikKK3sKKwlzdHJ1 Y3QgZHJtX3ByaW1lX21lbWJlciAqbWVtYmVyLCAqc2FmZTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NhZmUobWVtYmVyLCBzYWZlLCAmcHJpbWVfZnByaXYtPmhlYWQsIGVudHJ5KSB7CisJCWxpc3Rf ZGVsKCZtZW1iZXItPmVudHJ5KTsKKwkJa2ZyZWUobWVtYmVyKTsKKwl9Cit9CitFWFBPUlRfU1lN Qk9MKGRybV9wcmltZV9kZXN0cm95X2ZpbGVfcHJpdmF0ZSk7CisKK2ludCBkcm1fcHJpbWVfYWRk X2ltcG9ydGVkX2J1Zl9oYW5kbGUoc3RydWN0IGRybV9wcmltZV9maWxlX3ByaXZhdGUgKnByaW1l X2Zwcml2LCBzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwgdWludDMyX3QgaGFuZGxlKQoreworCXN0 cnVjdCBkcm1fcHJpbWVfbWVtYmVyICptZW1iZXI7CisKKwltZW1iZXIgPSBrbWFsbG9jKHNpemVv ZigqbWVtYmVyKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFtZW1iZXIpCisJCXJldHVybiAtRU5PTUVN OworCisJbWVtYmVyLT5kbWFfYnVmID0gZG1hX2J1ZjsKKwltZW1iZXItPmhhbmRsZSA9IGhhbmRs ZTsKKwlsaXN0X2FkZCgmbWVtYmVyLT5lbnRyeSwgJnByaW1lX2Zwcml2LT5oZWFkKTsKKwlyZXR1 cm4gMDsKK30KK0VYUE9SVF9TWU1CT0woZHJtX3ByaW1lX2FkZF9pbXBvcnRlZF9idWZfaGFuZGxl KTsKKworaW50IGRybV9wcmltZV9sb29rdXBfaW1wb3J0ZWRfYnVmX2hhbmRsZShzdHJ1Y3QgZHJt X3ByaW1lX2ZpbGVfcHJpdmF0ZSAqcHJpbWVfZnByaXYsIHN0cnVjdCBkbWFfYnVmICpkbWFfYnVm LCB1aW50MzJfdCAqaGFuZGxlKQoreworCXN0cnVjdCBkcm1fcHJpbWVfbWVtYmVyICptZW1iZXI7 CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KG1lbWJlciwgJnByaW1lX2Zwcml2LT5oZWFkLCBlbnRy eSkgeworCQlpZiAobWVtYmVyLT5kbWFfYnVmID09IGRtYV9idWYpIHsKKwkJCSpoYW5kbGUgPSBt ZW1iZXItPmhhbmRsZTsKKwkJCXJldHVybiAwOworCQl9CisJfQorCXJldHVybiAtRU5PRU5UOwor fQorRVhQT1JUX1NZTUJPTChkcm1fcHJpbWVfbG9va3VwX2ltcG9ydGVkX2J1Zl9oYW5kbGUpOwor Cit2b2lkIGRybV9wcmltZV9yZW1vdmVfaW1wb3J0ZWRfYnVmX2hhbmRsZShzdHJ1Y3QgZHJtX3By aW1lX2ZpbGVfcHJpdmF0ZSAqcHJpbWVfZnByaXYsIHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmKQor eworCXN0cnVjdCBkcm1fcHJpbWVfbWVtYmVyICptZW1iZXIsICpzYWZlOworCisJbXV0ZXhfbG9j aygmcHJpbWVfZnByaXYtPmxvY2spOworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShtZW1iZXIs IHNhZmUsICZwcmltZV9mcHJpdi0+aGVhZCwgZW50cnkpIHsKKwkJaWYgKG1lbWJlci0+ZG1hX2J1 ZiA9PSBkbWFfYnVmKSB7CisJCQlsaXN0X2RlbCgmbWVtYmVyLT5lbnRyeSk7CisJCQlrZnJlZSht ZW1iZXIpOworCQl9CisJfQorCW11dGV4X3VubG9jaygmcHJpbWVfZnByaXYtPmxvY2spOworfQor RVhQT1JUX1NZTUJPTChkcm1fcHJpbWVfcmVtb3ZlX2ltcG9ydGVkX2J1Zl9oYW5kbGUpOwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtLmggYi9pbmNsdWRlL2RybS9kcm0uaAppbmRleCAzNGE3 Yjg5Li42NGZmMDJkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm0uaAorKysgYi9pbmNsdWRl L2RybS9kcm0uaApAQCAtNjE3LDYgKzYxNywxNyBAQCBzdHJ1Y3QgZHJtX2dldF9jYXAgewogCV9f dTY0IHZhbHVlOwogfTsKIAorI2RlZmluZSBEUk1fQ0xPRVhFQyBPX0NMT0VYRUMKK3N0cnVjdCBk cm1fcHJpbWVfaGFuZGxlIHsKKwlfX3UzMiBoYW5kbGU7CisKKwkvKiogRmxhZ3MuLiBvbmx5IGFw cGxpY2FibGUgZm9yIGhhbmRsZS0+ZmQgKi8KKwlfX3UzMiBmbGFnczsKKworCS8qKiBSZXR1cm5l ZCBkbWFidWYgZmlsZSBkZXNjcmlwdG9yICovCisJX19zMzIgZmQ7Cit9OworCiAjaW5jbHVkZSAi ZHJtX21vZGUuaCIKIAogI2RlZmluZSBEUk1fSU9DVExfQkFTRQkJCSdkJwpAQCAtNjczLDcgKzY4 NCw4IEBAIHN0cnVjdCBkcm1fZ2V0X2NhcCB7CiAjZGVmaW5lIERSTV9JT0NUTF9VTkxPQ0sJCURS TV9JT1coIDB4MmIsIHN0cnVjdCBkcm1fbG9jaykKICNkZWZpbmUgRFJNX0lPQ1RMX0ZJTklTSAkJ RFJNX0lPVyggMHgyYywgc3RydWN0IGRybV9sb2NrKQogCi0jZGVmaW5lIERSTV9JT0NUTF9HRU1f UFJJTUVfT1BFTiAgICAgICAgRFJNX0lPV1IoMHgyZSwgc3RydWN0IGRybV9nZW1fb3BlbikKKyNk ZWZpbmUgRFJNX0lPQ1RMX1BSSU1FX0hBTkRMRV9UT19GRCAgICBEUk1fSU9XUigweDJkLCBzdHJ1 Y3QgZHJtX3ByaW1lX2hhbmRsZSkKKyNkZWZpbmUgRFJNX0lPQ1RMX1BSSU1FX0ZEX1RPX0hBTkRM RSAgICBEUk1fSU9XUigweDJlLCBzdHJ1Y3QgZHJtX3ByaW1lX2hhbmRsZSkKIAogI2RlZmluZSBE Uk1fSU9DVExfQUdQX0FDUVVJUkUJCURSTV9JTyggIDB4MzApCiAjZGVmaW5lIERSTV9JT0NUTF9B R1BfUkVMRUFTRQkJRFJNX0lPKCAgMHgzMSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybVAu aCBiL2luY2x1ZGUvZHJtL2RybVAuaAppbmRleCA1NzRiZDFjLi5kZDczMTA0IDEwMDY0NAotLS0g YS9pbmNsdWRlL2RybS9kcm1QLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtUC5oCkBAIC05MSw2ICs5 MSw3IEBAIHN0cnVjdCBkcm1fZGV2aWNlOwogI2RlZmluZSBEUk1fVVRfQ09SRSAJCTB4MDEKICNk ZWZpbmUgRFJNX1VUX0RSSVZFUgkJMHgwMgogI2RlZmluZSBEUk1fVVRfS01TCQkweDA0CisjZGVm aW5lIERSTV9VVF9QUklNRQkJMHgwOAogLyoKICAqIFRocmVlIGRlYnVnIGxldmVscyBhcmUgZGVm aW5lZC4KICAqIGRybV9jb3JlLCBkcm1fZHJpdmVyLCBkcm1fa21zCkBAIC0xNTAsNiArMTUxLDcg QEAgaW50IGRybV9lcnIoY29uc3QgY2hhciAqZnVuYywgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4p OwogI2RlZmluZSBEUklWRVJfSVJRX1ZCTDIgICAgMHg4MDAKICNkZWZpbmUgRFJJVkVSX0dFTSAg ICAgICAgIDB4MTAwMAogI2RlZmluZSBEUklWRVJfTU9ERVNFVCAgICAgMHgyMDAwCisjZGVmaW5l IERSSVZFUl9QUklNRSAgICAgICAweDQwMDAKIAogI2RlZmluZSBEUklWRVJfQlVTX1BDSSAweDEK ICNkZWZpbmUgRFJJVkVSX0JVU19QTEFURk9STSAweDIKQEAgLTIxNSw2ICsyMTcsMTEgQEAgaW50 IGRybV9lcnIoY29uc3QgY2hhciAqZnVuYywgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwogCQlk cm1fdXRfZGVidWdfcHJpbnRrKERSTV9VVF9LTVMsIERSTV9OQU1FLCAJCVwKIAkJCQkJIF9fZnVu Y19fLCBmbXQsICMjYXJncyk7CVwKIAl9IHdoaWxlICgwKQorI2RlZmluZSBEUk1fREVCVUdfUFJJ TUUoZm10LCBhcmdzLi4uKQkJCQkJXAorCWRvIHsJCQkJCQkJCVwKKwkJZHJtX3V0X2RlYnVnX3By aW50ayhEUk1fVVRfUFJJTUUsIERSTV9OQU1FLAkJXAorCQkJCQlfX2Z1bmNfXywgZm10LCAjI2Fy Z3MpOwkJXAorCX0gd2hpbGUgKDApCiAjZGVmaW5lIERSTV9MT0coZm10LCBhcmdzLi4uKQkJCQkJ CVwKIAlkbyB7CQkJCQkJCQlcCiAJCWRybV91dF9kZWJ1Z19wcmludGsoRFJNX1VUX0NPUkUsIE5V TEwsCQkJXApAQCAtMjM4LDYgKzI0NSw3IEBAIGludCBkcm1fZXJyKGNvbnN0IGNoYXIgKmZ1bmMs IGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKICNlbHNlCiAjZGVmaW5lIERSTV9ERUJVR19EUklW RVIoZm10LCBhcmdzLi4uKSBkbyB7IH0gd2hpbGUgKDApCiAjZGVmaW5lIERSTV9ERUJVR19LTVMo Zm10LCBhcmdzLi4uKQlkbyB7IH0gd2hpbGUgKDApCisjZGVmaW5lIERSTV9ERUJVR19QUklNRShm bXQsIGFyZ3MuLi4pCWRvIHsgfSB3aGlsZSAoMCkKICNkZWZpbmUgRFJNX0RFQlVHKGZtdCwgYXJn Li4uKQkJIGRvIHsgfSB3aGlsZSAoMCkKICNkZWZpbmUgRFJNX0xPRyhmbXQsIGFyZy4uLikJCWRv IHsgfSB3aGlsZSAoMCkKICNkZWZpbmUgRFJNX0xPR19LTVMoZm10LCBhcmdzLi4uKSBkbyB7IH0g d2hpbGUgKDApCkBAIC00MTAsNiArNDE4LDEyIEBAIHN0cnVjdCBkcm1fcGVuZGluZ19ldmVudCB7 CiAJdm9pZCAoKmRlc3Ryb3kpKHN0cnVjdCBkcm1fcGVuZGluZ19ldmVudCAqZXZlbnQpOwogfTsK IAorLyogaW5pdGlhbCBpbXBsZW1lbnRhdG9uIHVzaW5nIGEgbGlua2VkIGxpc3QgLSB0b2RvIGhh c2h0YWIgKi8KK3N0cnVjdCBkcm1fcHJpbWVfZmlsZV9wcml2YXRlIHsKKwlzdHJ1Y3QgbGlzdF9o ZWFkIGhlYWQ7CisJc3RydWN0IG11dGV4IGxvY2s7Cit9OworCiAvKiogRmlsZSBwcml2YXRlIGRh dGEgKi8KIHN0cnVjdCBkcm1fZmlsZSB7CiAJaW50IGF1dGhlbnRpY2F0ZWQ7CkBAIC00MzcsNiAr NDUxLDggQEAgc3RydWN0IGRybV9maWxlIHsKIAl3YWl0X3F1ZXVlX2hlYWRfdCBldmVudF93YWl0 OwogCXN0cnVjdCBsaXN0X2hlYWQgZXZlbnRfbGlzdDsKIAlpbnQgZXZlbnRfc3BhY2U7CisKKwlz dHJ1Y3QgZHJtX3ByaW1lX2ZpbGVfcHJpdmF0ZSBwcmltZTsKIH07CiAKIC8qKiBXYWl0IHF1ZXVl ICovCkBAIC02NTIsNiArNjY4LDEyIEBAIHN0cnVjdCBkcm1fZ2VtX29iamVjdCB7CiAJdWludDMy X3QgcGVuZGluZ193cml0ZV9kb21haW47CiAKIAl2b2lkICpkcml2ZXJfcHJpdmF0ZTsKKworCS8q IGRtYSBidWYgZXhwb3J0ZWQgZnJvbSB0aGlzIEdFTSBvYmplY3QgKi8KKwlzdHJ1Y3QgZG1hX2J1 ZiAqZXhwb3J0X2RtYV9idWY7CisKKwkvKiBkbWEgYnVmIGF0dGFjaG1lbnQgYmFja2luZyB0aGlz IG9iamVjdCAqLworCXN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmltcG9ydF9hdHRhY2g7CiB9 OwogCiAjaW5jbHVkZSAiZHJtX2NydGMuaCIKQEAgLTg5MCw2ICs5MTIsMjAgQEAgc3RydWN0IGRy bV9kcml2ZXIgewogCWludCAoKmdlbV9vcGVuX29iamVjdCkgKHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqLCBzdHJ1Y3QgZHJtX2ZpbGUgKik7CiAJdm9pZCAoKmdlbV9jbG9zZV9vYmplY3QpIChzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKiwgc3RydWN0IGRybV9maWxlICopOwogCisJLyogcHJpbWU6ICov CisJLyogZXhwb3J0IGhhbmRsZSAtPiBmZCAoc2VlIGRybV9nZW1fcHJpbWVfaGFuZGxlX3RvX2Zk KCkgaGVscGVyKSAqLworCWludCAoKnByaW1lX2hhbmRsZV90b19mZCkoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCisJCQkJdWludDMyX3QgaGFuZGxl LCB1aW50MzJfdCBmbGFncywgaW50ICpwcmltZV9mZCk7CisJLyogaW1wb3J0IGZkIC0+IGhhbmRs ZSAoc2VlIGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlKCkgaGVscGVyKSAqLworCWludCAoKnBy aW1lX2ZkX3RvX2hhbmRsZSkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxl ICpmaWxlX3ByaXYsCisJCQkJaW50IHByaW1lX2ZkLCB1aW50MzJfdCAqaGFuZGxlKTsKKwkvKiBl eHBvcnQgR0VNIC0+IGRtYWJ1ZiAqLworCXN0cnVjdCBkbWFfYnVmICogKCpnZW1fcHJpbWVfZXhw b3J0KShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqLCBpbnQgZmxhZ3MpOworCS8qIGltcG9ydCBkbWFidWYgLT4gR0VNICovCisJc3RydWN0IGRy bV9nZW1fb2JqZWN0ICogKCpnZW1fcHJpbWVfaW1wb3J0KShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAorCQkJCXN0cnVjdCBkbWFfYnVmICpkbWFfYnVmKTsKKwogCS8qIHZnYSBhcmIgaXJxIGhhbmRs ZXIgKi8KIAl2b2lkICgqdmdhYXJiX2lycSkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCBz dGF0ZSk7CiAKQEAgLTE1MDksNiArMTU0NSwzMiBAQCBleHRlcm4gaW50IGRybV92YmxhbmtfaW5m byhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpOwogZXh0ZXJuIGludCBkcm1fY2xpZW50 c19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCogZGF0YSk7CiBleHRlcm4gaW50IGRybV9n ZW1fbmFtZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSk7CiAKKworZXh0ZXJu IGludCBkcm1fZ2VtX3ByaW1lX2hhbmRsZV90b19mZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAor CQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCBm bGFncywKKwkJaW50ICpwcmltZV9mZCk7CitleHRlcm4gaW50IGRybV9nZW1fcHJpbWVfZmRfdG9f aGFuZGxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9w cml2LCBpbnQgcHJpbWVfZmQsIHVpbnQzMl90ICpoYW5kbGUpOworCitleHRlcm4gaW50IGRybV9w cmltZV9oYW5kbGVfdG9fZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKKwkJCQkJc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOworZXh0ZXJuIGludCBkcm1fcHJp bWVfZmRfdG9faGFuZGxlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CisJCQkJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKKworZXh0ZXJuIHN0cnVjdCBzZ190 YWJsZSAqZHJtX3ByaW1lX3BhZ2VzX3RvX3NnKHN0cnVjdCBwYWdlICoqcGFnZXMsIGludCBucl9w YWdlcyk7CitleHRlcm4gdm9pZCBkcm1fcHJpbWVfZ2VtX2Rlc3Ryb3koc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmosIHN0cnVjdCBzZ190YWJsZSAqc2cpOworCisKK3ZvaWQgZHJtX3ByaW1lX2lu aXRfZmlsZV9wcml2YXRlKHN0cnVjdCBkcm1fcHJpbWVfZmlsZV9wcml2YXRlICpwcmltZV9mcHJp dik7Cit2b2lkIGRybV9wcmltZV9kZXN0cm95X2ZpbGVfcHJpdmF0ZShzdHJ1Y3QgZHJtX3ByaW1l X2ZpbGVfcHJpdmF0ZSAqcHJpbWVfZnByaXYpOworaW50IGRybV9wcmltZV9hZGRfaW1wb3J0ZWRf YnVmX2hhbmRsZShzdHJ1Y3QgZHJtX3ByaW1lX2ZpbGVfcHJpdmF0ZSAqcHJpbWVfZnByaXYsIHN0 cnVjdCBkbWFfYnVmICpkbWFfYnVmLCB1aW50MzJfdCBoYW5kbGUpOworaW50IGRybV9wcmltZV9s b29rdXBfaW1wb3J0ZWRfYnVmX2hhbmRsZShzdHJ1Y3QgZHJtX3ByaW1lX2ZpbGVfcHJpdmF0ZSAq cHJpbWVfZnByaXYsIHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCB1aW50MzJfdCAqaGFuZGxlKTsK K3ZvaWQgZHJtX3ByaW1lX3JlbW92ZV9pbXBvcnRlZF9idWZfaGFuZGxlKHN0cnVjdCBkcm1fcHJp bWVfZmlsZV9wcml2YXRlICpwcmltZV9mcHJpdiwgc3RydWN0IGRtYV9idWYgKmRtYV9idWYpOwor CitpbnQgZHJtX3ByaW1lX2FkZF9kbWFfYnVmKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKK2ludCBkcm1fcHJpbWVfbG9va3VwX29iaihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZG1hX2J1ZiAqYnVmLAorCQkJIHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqKm9iaik7CisKICNpZiBEUk1fREVCVUdfQ09ERQogZXh0ZXJuIGludCBkcm1fdm1h X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKTsKICNlbmRpZgotLSAKMS43Ljcu NgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK