From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: [PATCH 13/28] drm/vmwgfx: Replace SurfaceDMA usage with SurfaceCopy in 2D VMs Date: Wed, 12 Aug 2015 22:43:02 -0700 Message-ID: <1439444597-4664-14-git-send-email-thellstrom@vmware.com> References: <1439444597-4664-1-git-send-email-thellstrom@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.bahnhof.se (mx1.bahnhof.se [213.80.101.11]) by gabe.freedesktop.org (Postfix) with ESMTPS id 170676EBEC for ; Wed, 12 Aug 2015 23:05:13 -0700 (PDT) Received: from localhost (mf.bahnhof.se [213.80.101.20]) by mx1-reinject (Postfix) with ESMTP id 46CC444090 for ; Thu, 13 Aug 2015 07:43:34 +0200 (CEST) Received: from mf3.bahnhof.se ([127.0.0.1]) by localhost (mf3.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id NA8+86GDefCO for ; Thu, 13 Aug 2015 07:43:25 +0200 (CEST) Received: from mail.shipmail.org (h-5-150-198-217.na.cust.bahnhof.se [5.150.198.217]) by mf3.bahnhof.se (Postfix) with ESMTP id 8D3C83E8CEB for ; Thu, 13 Aug 2015 07:43:25 +0200 (CEST) Received: from mail.shipmail.org (lin0.kontor.shipmail.org [127.0.0.1]) by mail.shipmail.org (Postfix) with ESMTP id E60A03F4003 for ; Thu, 13 Aug 2015 07:43:24 +0200 (CEST) Received: from localhost.localdomain (lin0.kontor.shipmail.org [127.0.0.1]) by mail.shipmail.org (Postfix) with ESMTP id BBA203DC00D for ; Thu, 13 Aug 2015 07:43:24 +0200 (CEST) In-Reply-To: <1439444597-4664-1-git-send-email-thellstrom@vmware.com> 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 List-Id: dri-devel@lists.freedesktop.org RnJvbTogU2luY2xhaXIgWWVoIDxzeWVoQHZtd2FyZS5jb20+CgpUaGlzIHBhdGNoIGFkZHJlc3Mg dGhlIGZvbGxvd2luZyB1bmRlcmx5aW5nIGlzc3VlcyB3aXRoIFN1cmZhY2VETUEKCiogU3VyZmFj ZURNQSBjb21tYW5kIGRvZXMgbm90IHdvcmsgaW4gYSAyRCBWTSwgYnV0IHdlIGNhbiB3cmFwIGEK ICBwcm94eSBzdXJmYWNlIGFyb3VuZCB0aGUgc2FtZSBETUEgYnVmZmVyIGFuZCB1c2UgdGhlIFN1 cmZhY2VDb3B5CiAgY29tbWFuZCB3aGljaCBkb2VzIHdvcmsgaW4gYSAyRCBWTS4KCiogV3JhcHBp bmcgYSBETUEgYnVmZmVyIHdpdGggYSBwcm94eSBzdXJmYWNlIGFsc28gZ2l2ZXMgdXMgYW4KICBh ZGRlZCBvcHRpbWl6YXRpb24gcGF0aCBmb3IgdGhlIGNhc2Ugd2hlbiB0aGUgRE1BIGJ1ZgogIGRp bWVuc2lvbnMgbWF0Y2ggdGhlIG1vZGUuICBJbiB0aGlzIGNhc2UsIHRoZSBETUEgYnVmIGNhbgog IGJlIHBpbm5lZCBhcyB0aGUgZGlzcGxheSBzdXJmYWNlLCBzYXZpbmcgYW4gZXh0cmEgY29weS4K ICBUaGlzIG9ubHkgd29ya3MgaW4gYSAyRCBWTSBiZWNhdXNlIHdlIHdvbid0IGJlIGRvaW5nIGFu eQogIHJlbmRlcmluZyBvcGVyYXRpb25zIGRpcmVjdGx5IHRvIHRoZSBkaXNwbGF5IHN1cmZhY2Uu Cgp2MgoqIE1vdmVkIGlzX2RtYWJ1Zl9wcm94eSBmaWVsZCB0byB2bXdfZnJhbWVidWZmZXJfc3Vy ZmFjZQoqIFVuZG9uZSBjb2Rpbmcgc3R5bGUgY2hhbmdlcwoqIEFkZHJlc3NlZCBvdGhlciBpc3N1 ZXMgZnJvbSByZXZpZXcKClNpZ25lZC1vZmYtYnk6IFNpbmNsYWlyIFllaCA8c3llaEB2bXdhcmUu Y29tPgpSZXZpZXdlZC1ieTogVGhvbWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5oICAgICAgfCAgIDMgKy0K IGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2V4ZWNidWYuYyAgfCAgMjAgKystLQogZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmMgICAgICB8IDEwNyArKysrKysrKysrKysr KysrKystLQogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmggICAgICB8ICAgMSAr CiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9tb2IuYyAgICAgIHwgICAzICstCiBkcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9yZXNvdXJjZS5jIHwgICAyICstCiBkcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF9zdGR1LmMgICAgIHwgMTY1ICsrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0KIDcgZmlsZXMgY2hhbmdlZCwgMjY2IGluc2VydGlvbnMoKyksIDM1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgKaW5kZXggMDRmOGJmMi4uNWQw NDg1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgKQEAgLTM0Miw3ICszNDIsOCBA QCBlbnVtIHZtd19kaXNwbGF5X3VuaXRfdHlwZSB7CiB9OwogCiAKLSNkZWZpbmUgVk1XX1FVSVJL X1NDUkVFTlRBUkdFVCAoMVUgPDwgMCkKKyNkZWZpbmUgVk1XX1FVSVJLX0RTVF9TSURfT0sgKDFV IDw8IDApCisjZGVmaW5lIFZNV19RVUlSS19TUkNfU0lEX09LICgxVSA8PCAxKQogCiBzdHJ1Y3Qg dm13X3N3X2NvbnRleHR7CiAJc3RydWN0IGRybV9vcGVuX2hhc2ggcmVzX2h0OwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZXhlY2J1Zi5jIGIvZHJpdmVycy9ncHUv ZHJtL3Ztd2dmeC92bXdnZnhfZXhlY2J1Zi5jCmluZGV4IDQ5N2FkNmEuLjBlYzVmZDYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2V4ZWNidWYuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9leGVjYnVmLmMKQEAgLTY3NCwxMyArNjc0LDE2IEBA IHN0YXRpYyBpbnQgdm13X2NtZF9zdXJmYWNlX2NvcHlfY2hlY2soc3RydWN0IHZtd19wcml2YXRl ICpkZXZfcHJpdiwKIAlpbnQgcmV0OwogCiAJY21kID0gY29udGFpbmVyX29mKGhlYWRlciwgc3Ry dWN0IHZtd19zaWRfY21kLCBoZWFkZXIpOwotCXJldCA9IHZtd19jbWRfcmVzX2NoZWNrKGRldl9w cml2LCBzd19jb250ZXh0LCB2bXdfcmVzX3N1cmZhY2UsCi0JCQkJdXNlcl9zdXJmYWNlX2NvbnZl cnRlciwKLQkJCQkmY21kLT5ib2R5LnNyYy5zaWQsIE5VTEwpOwotCWlmICh1bmxpa2VseShyZXQg IT0gMCkpCi0JCXJldHVybiByZXQ7CiAKLQlpZiAoc3dfY29udGV4dC0+cXVpcmtzICYgVk1XX1FV SVJLX1NDUkVFTlRBUkdFVCkKKwlpZiAoIShzd19jb250ZXh0LT5xdWlya3MgJiBWTVdfUVVJUktf U1JDX1NJRF9PSykpIHsKKwkJcmV0ID0gdm13X2NtZF9yZXNfY2hlY2soZGV2X3ByaXYsIHN3X2Nv bnRleHQsIHZtd19yZXNfc3VyZmFjZSwKKwkJCQkJdXNlcl9zdXJmYWNlX2NvbnZlcnRlciwKKwkJ CQkJJmNtZC0+Ym9keS5zcmMuc2lkLCBOVUxMKTsKKwkJaWYgKHJldCAhPSAwKQorCQkJcmV0dXJu IHJldDsKKwl9CisKKwlpZiAoc3dfY29udGV4dC0+cXVpcmtzICYgVk1XX1FVSVJLX0RTVF9TSURf T0spCiAJCXJldHVybiAwOwogCiAJcmV0dXJuIHZtd19jbWRfcmVzX2NoZWNrKGRldl9wcml2LCBz d19jb250ZXh0LCB2bXdfcmVzX3N1cmZhY2UsCkBAIC0xMjY0LDcgKzEyNjcsNyBAQCBzdGF0aWMg aW50IHZtd19jbWRfZG1hKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaWYgKHVubGlr ZWx5KHN1ZmZpeC0+bWF4aW11bU9mZnNldCA+IGJvX3NpemUpKQogCQlzdWZmaXgtPm1heGltdW1P ZmZzZXQgPSBib19zaXplOwogCi0JaWYgKHN3X2NvbnRleHQtPnF1aXJrcyAmIFZNV19RVUlSS19T Q1JFRU5UQVJHRVQpCisJaWYgKHN3X2NvbnRleHQtPnF1aXJrcyAmIFZNV19RVUlSS19EU1RfU0lE X09LKQogCQlnb3RvIG91dF9ub19zdXJmYWNlOwogCiAJcmV0ID0gdm13X2NtZF9yZXNfY2hlY2so ZGV2X3ByaXYsIHN3X2NvbnRleHQsIHZtd19yZXNfc3VyZmFjZSwKQEAgLTE1MDUsNiArMTUwOCw5 IEBAIHN0YXRpYyBpbnQgdm13X2NtZF91cGRhdGVfZ2JfaW1hZ2Uoc3RydWN0IHZtd19wcml2YXRl ICpkZXZfcHJpdiwKIAogCWNtZCA9IGNvbnRhaW5lcl9vZihoZWFkZXIsIHN0cnVjdCB2bXdfZ2Jf c3VyZmFjZV9jbWQsIGhlYWRlcik7CiAKKwlpZiAoc3dfY29udGV4dC0+cXVpcmtzICYgVk1XX1FV SVJLX1NSQ19TSURfT0spCisJCXJldHVybiAwOworCiAJcmV0dXJuIHZtd19jbWRfcmVzX2NoZWNr KGRldl9wcml2LCBzd19jb250ZXh0LCB2bXdfcmVzX3N1cmZhY2UsCiAJCQkJIHVzZXJfc3VyZmFj ZV9jb252ZXJ0ZXIsCiAJCQkJICZjbWQtPmJvZHkuaW1hZ2Uuc2lkLCBOVUxMKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5jIGIvZHJpdmVycy9ncHUvZHJt L3Ztd2dmeC92bXdnZnhfa21zLmMKaW5kZXggNjY4MGFhNi4uNjE1ZmY2Y2ZjIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9rbXMuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9rbXMuYwpAQCAtNDg3LDcgKzQ4Nyw4IEBAIHN0YXRpYyBpbnQgdm13 X2ttc19uZXdfZnJhbWVidWZmZXJfc3VyZmFjZShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2 LAogCQkJCQkgICBzdHJ1Y3Qgdm13X3N1cmZhY2UgKnN1cmZhY2UsCiAJCQkJCSAgIHN0cnVjdCB2 bXdfZnJhbWVidWZmZXIgKipvdXQsCiAJCQkJCSAgIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9mYl9j bWQKLQkJCQkJICAgKm1vZGVfY21kKQorCQkJCQkgICAqbW9kZV9jbWQsCisJCQkJCSAgIGJvb2wg aXNfZG1hYnVmX3Byb3h5KQogCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2 LT5kZXY7CkBAIC01NjIsNiArNTYzLDcgQEAgc3RhdGljIGludCB2bXdfa21zX25ld19mcmFtZWJ1 ZmZlcl9zdXJmYWNlKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJdmZicy0+c3VyZmFj ZSA9IHN1cmZhY2U7CiAJdmZicy0+YmFzZS51c2VyX2hhbmRsZSA9IG1vZGVfY21kLT5oYW5kbGU7 CiAJdmZicy0+bWFzdGVyID0gZHJtX21hc3Rlcl9nZXQoZmlsZV9wcml2LT5tYXN0ZXIpOworCXZm YnMtPmlzX2RtYWJ1Zl9wcm94eSA9IGlzX2RtYWJ1Zl9wcm94eTsKIAogCW11dGV4X2xvY2soJnZt YXN0ZXItPmZiX3N1cmZfbXV0ZXgpOwogCWxpc3RfYWRkX3RhaWwoJnZmYnMtPmhlYWQsICZ2bWFz dGVyLT5mYl9zdXJmKTsKQEAgLTY5OSw2ICs3MDEsODIgQEAgc3RhdGljIGludCB2bXdfZnJhbWVi dWZmZXJfZG1hYnVmX3VucGluKHN0cnVjdCB2bXdfZnJhbWVidWZmZXIgKnZmYikKIAlyZXR1cm4g dm13X2RtYWJ1Zl91bnBpbihkZXZfcHJpdiwgdmZiZC0+YnVmZmVyLCBmYWxzZSk7CiB9CiAKKy8q KgorICogdm13X2NyZWF0ZV9kbWFidWZfcHJveHkgLSBjcmVhdGUgYSBwcm94eSBzdXJmYWNlIGZv ciB0aGUgRE1BIGJ1ZgorICoKKyAqIEBkZXY6IERSTSBkZXZpY2UKKyAqIEBtb2RlX2NtZDogcGFy YW1ldGVycyBmb3IgdGhlIG5ldyBzdXJmYWNlCisgKiBAZG1hYnVmX21vYjogTU9CIGJhY2tpbmcg dGhlIERNQSBidWYKKyAqIEBzcmZfb3V0OiBuZXdseSBjcmVhdGVkIHN1cmZhY2UKKyAqCisgKiBX aGVuIHRoZSBjb250ZW50IEZCIGlzIGEgRE1BIGJ1Ziwgd2UgY3JlYXRlIGEgc3VyZmFjZSBhcyBh IHByb3h5IHRvIHRoZQorICogc2FtZSBidWZmZXIuICBUaGlzIHdheSB3ZSBjYW4gZG8gYSBzdXJm YWNlIGNvcHkgcmF0aGVyIHRoYW4gYSBzdXJmYWNlIERNQS4KKyAqIFRoaXMgaXMgYSBtb3JlIGVm ZmljaWVudCBhcHByb2FjaAorICoKKyAqIFJFVFVSTlM6CisgKiAwIG9uIHN1Y2Nlc3MsIGVycm9y IGNvZGUgb3RoZXJ3aXNlCisgKi8KK3N0YXRpYyBpbnQgdm13X2NyZWF0ZV9kbWFidWZfcHJveHko c3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkgICBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kICpt b2RlX2NtZCwKKwkJCQkgICBzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKmRtYWJ1Zl9tb2IsCisJCQkJ ICAgc3RydWN0IHZtd19zdXJmYWNlICoqc3JmX291dCkKK3sKKwl1aW50MzJfdCBmb3JtYXQ7CisJ c3RydWN0IGRybV92bXdfc2l6ZSBjb250ZW50X2Jhc2Vfc2l6ZTsKKwlpbnQgcmV0OworCisKKwlz d2l0Y2ggKG1vZGVfY21kLT5kZXB0aCkgeworCWNhc2UgMzI6CisJY2FzZSAyNDoKKwkJZm9ybWF0 ID0gU1ZHQTNEX1g4UjhHOEI4OworCQlicmVhazsKKworCWNhc2UgMTY6CisJY2FzZSAxNToKKwkJ Zm9ybWF0ID0gU1ZHQTNEX1I1RzZCNTsKKwkJYnJlYWs7CisKKwljYXNlIDg6CisJCWZvcm1hdCA9 IFNWR0EzRF9QODsKKwkJYnJlYWs7CisKKwlkZWZhdWx0OgorCQlEUk1fRVJST1IoIkludmFsaWQg ZnJhbWVidWZmZXIgZm9ybWF0ICVkXG4iLCBtb2RlX2NtZC0+ZGVwdGgpOworCQlyZXR1cm4gLUVJ TlZBTDsKKwl9CisKKwljb250ZW50X2Jhc2Vfc2l6ZS53aWR0aCAgPSBtb2RlX2NtZC0+d2lkdGg7 CisJY29udGVudF9iYXNlX3NpemUuaGVpZ2h0ID0gbW9kZV9jbWQtPmhlaWdodDsKKwljb250ZW50 X2Jhc2Vfc2l6ZS5kZXB0aCAgPSAxOworCisJcmV0ID0gdm13X3N1cmZhY2VfZ2JfcHJpdl9kZWZp bmUoZGV2LAorCQkJMCwgLyoga2VybmVsIHZpc2libGUgb25seSAqLworCQkJMCwgLyogZmxhZ3Mg Ki8KKwkJCWZvcm1hdCwKKwkJCXRydWUsIC8qIGNhbiBiZSBhIHNjYW5vdXQgYnVmZmVyICovCisJ CQkxLCAvKiBudW0gb2YgbWlwIGxldmVscyAqLworCQkJMCwKKwkJCWNvbnRlbnRfYmFzZV9zaXpl LAorCQkJc3JmX291dCk7CisJaWYgKHJldCkgeworCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhbGxv Y2F0ZSBwcm94eSBjb250ZW50IGJ1ZmZlclxuIik7CisJCXJldHVybiByZXQ7CisJfQorCisJLyog VXNlIHRoZSBzYW1lIE1PQiBiYWNraW5nIGZvciBzdXJmYWNlICovCisJdm13X2RtYWJ1Zl9yZWZl cmVuY2UoZG1hYnVmX21vYik7CisKKwkoKnNyZl9vdXQpLT5yZXMuYmFja3VwID0gZG1hYnVmX21v YjsKKworCS8qIEZJWE1FOiAgV2FpdGluZyBmb3IgZmJkZXYgcmV3b3JrIHRvIGRvIGEgcHJvcGVy IHJlc2VydmUvcGluICovCisJcmV0ID0gdm13X3Jlc291cmNlX3ZhbGlkYXRlKCYoKnNyZl9vdXQp LT5yZXMpOworCisJcmV0dXJuIHJldDsKK30KKworCisKIHN0YXRpYyBpbnQgdm13X2ttc19uZXdf ZnJhbWVidWZmZXJfZG1hYnVmKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJCSAg c3RydWN0IHZtd19kbWFfYnVmZmVyICpkbWFidWYsCiAJCQkJCSAgc3RydWN0IHZtd19mcmFtZWJ1 ZmZlciAqKm91dCwKQEAgLTgwMSw2ICs4NzksNyBAQCBzdGF0aWMgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqdm13X2ttc19mYl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlzdHJ1Y3Qg dm13X2RtYV9idWZmZXIgKmJvID0gTlVMTDsKIAlzdHJ1Y3QgdHRtX2Jhc2Vfb2JqZWN0ICp1c2Vy X29iajsKIAlzdHJ1Y3QgZHJtX21vZGVfZmJfY21kIG1vZGVfY21kOworCWJvb2wgaXNfZG1hYnVm X3Byb3h5ID0gZmFsc2U7CiAJaW50IHJldDsKIAogCW1vZGVfY21kLndpZHRoID0gbW9kZV9jbWQy LT53aWR0aDsKQEAgLTg0OSwxMyArOTI4LDI5IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICp2bXdfa21zX2ZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWlmIChyZXQp CiAJCWdvdG8gZXJyX291dDsKIAotCS8qIENyZWF0ZSB0aGUgbmV3IGZyYW1lYnVmZmVyIGRlcGVu ZGluZyBvbmUgd2hhdCB3ZSBnb3QgYmFjayAqLwotCWlmIChibykKKwkvKgorCSAqIFdlIGNhbm5v dCB1c2UgdGhlIFN1cmZhY2VETUEgY29tbWFuZCBpbiBhbiBub24tYWNjZWxlcmF0ZWQgVk0sCisJ ICogdGhlcmVmb3JlLCB3cmFwIHRoZSBETUEgYnVmIGluIGEgc3VyZmFjZSBzbyB3ZSBjYW4gdXNl IHRoZQorCSAqIFN1cmZhY2VDb3B5IGNvbW1hbmQuCisJICovCisJaWYgKGJvICYmICEoZGV2X3By aXYtPmNhcGFiaWxpdGllcyAmIFNWR0FfQ0FQXzNEKSAmJgorCSAgICBkZXZfcHJpdi0+YWN0aXZl X2Rpc3BsYXlfdW5pdCA9PSB2bXdfZHVfc2NyZWVuX3RhcmdldCkgeworCQlyZXQgPSB2bXdfY3Jl YXRlX2RtYWJ1Zl9wcm94eShkZXZfcHJpdi0+ZGV2LCAmbW9kZV9jbWQsIGJvLAorCQkJJnN1cmZh Y2UpOworCQlpZiAocmV0KQorCQkJZ290byBlcnJfb3V0OworCisJCWlzX2RtYWJ1Zl9wcm94eSA9 IHRydWU7CisJfQorCisJLyogQ3JlYXRlIHRoZSBuZXcgZnJhbWVidWZmZXIgZGVwZW5kaW5nIG9u ZSB3aGF0IHdlIGhhdmUgKi8KKwlpZiAoc3VyZmFjZSkKKwkJcmV0ID0gdm13X2ttc19uZXdfZnJh bWVidWZmZXJfc3VyZmFjZShkZXZfcHJpdiwgZmlsZV9wcml2LAorCQkJCQkJICAgICAgc3VyZmFj ZSwgJnZmYiwgJm1vZGVfY21kLAorCQkJCQkJICAgICAgaXNfZG1hYnVmX3Byb3h5KTsKKwllbHNl IGlmIChibykKIAkJcmV0ID0gdm13X2ttc19uZXdfZnJhbWVidWZmZXJfZG1hYnVmKGRldl9wcml2 LCBibywgJnZmYiwKIAkJCQkJCSAgICAgJm1vZGVfY21kKTsKLQllbHNlIGlmIChzdXJmYWNlKQot CQlyZXQgPSB2bXdfa21zX25ld19mcmFtZWJ1ZmZlcl9zdXJmYWNlKGRldl9wcml2LCBmaWxlX3By aXYsCi0JCQkJCQkgICAgICBzdXJmYWNlLCAmdmZiLCAmbW9kZV9jbWQpOwogCWVsc2UKIAkJQlVH KCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5oIGIv ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmgKaW5kZXggNTQ4ZmE4Ny4uZGI4YWU5 NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmgKQEAgLTcyLDYgKzcyLDcgQEAgc3Ry dWN0IHZtd19mcmFtZWJ1ZmZlcl9zdXJmYWNlIHsKIAlzdHJ1Y3Qgdm13X2RtYV9idWZmZXIgKmJ1 ZmZlcjsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGhlYWQ7CiAJc3RydWN0IGRybV9tYXN0ZXIgKm1hc3Rl cjsKKwlib29sIGlzX2RtYWJ1Zl9wcm94eTsgIC8qIHRydWUgaWYgdGhpcyBpcyBwcm94eSBzdXJm YWNlIGZvciBETUEgYnVmICovCiB9OwogCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92 bXdnZngvdm13Z2Z4X21vYi5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfbW9iLmMK aW5kZXggMGZlYWM1Ni4uZTBmYzI0OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfbW9iLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfbW9iLmMK QEAgLTMxLDggKzMxLDcgQEAKICAqIElmIHdlIHNldCB1cCB0aGUgc2NyZWVuIHRhcmdldCBvdGFi bGUsIHNjcmVlbiBvYmplY3RzIHN0b3Agd29ya2luZy4KICAqLwogCi0jZGVmaW5lIFZNV19PVEFC TEVfU0VUVVBfU1VCICgoVk1XR0ZYX0VOQUJMRV9TQ1JFRU5fVEFSR0VUX09UQUJMRSAmJglcCi0J CQkgICAgICAgKGRldl9wcml2LT5jYXBhYmlsaXRpZXMgJiBTVkdBX0NBUF8zRCkpID8gMCA6IDEp CisjZGVmaW5lIFZNV19PVEFCTEVfU0VUVVBfU1VCICgoVk1XR0ZYX0VOQUJMRV9TQ1JFRU5fVEFS R0VUX09UQUJMRSA/IDAgOiAxKSkKIAogI2lmZGVmIENPTkZJR182NEJJVAogI2RlZmluZSBWTVdf UFBOX1NJWkUgOApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcmVz b3VyY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3Jlc291cmNlLmMKaW5kZXgg NjczOGMxZS4uOWRjYmU4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdn ZnhfcmVzb3VyY2UuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9yZXNvdXJj ZS5jCkBAIC00OTcsNyArNDk3LDcgQEAgaW50IHZtd191c2VyX2RtYWJ1Zl9hbGxvYyhzdHJ1Y3Qg dm13X3ByaXZhdGUgKmRldl9wcml2LAogCiAJcmV0ID0gdm13X2RtYWJ1Zl9pbml0KGRldl9wcml2 LCAmdXNlcl9iby0+ZG1hLCBzaXplLAogCQkJICAgICAgKGRldl9wcml2LT5oYXNfbW9iKSA/Ci0J CQkgICAgICAmdm13X3N5c19wbGFjZW1lbnQgOgorCQkJICAgICAgJnZtd19tb2JfcGxhY2VtZW50 IDoKIAkJCSAgICAgICZ2bXdfdnJhbV9zeXNfcGxhY2VtZW50LCB0cnVlLAogCQkJICAgICAgJnZt d191c2VyX2RtYWJ1Zl9kZXN0cm95KTsKIAlpZiAodW5saWtlbHkocmV0ICE9IDApKQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc3RkdS5jIGIvZHJpdmVycy9ncHUv ZHJtL3Ztd2dmeC92bXdnZnhfc3RkdS5jCmluZGV4IDNiODIzNWMuLmVmOTlkZjcgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3N0ZHUuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF9zdGR1LmMKQEAgLTE0Miw2ICsxNDIsNjMgQEAgc3RhdGljIHZv aWQgdm13X3N0ZHVfY3J0Y19kZXN0cm95KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAogCiAvKioK KyAqIHZtd19zdGR1X2RtYV91cGRhdGUgLSBVcGRhdGUgRE1BIGJ1ZiBkaXJ0eSByZWdpb24gb24g dGhlIFNWR0EgZGV2aWNlCisgKgorICogQGRldl9wcml2OiAgVk1XIERSTSBkZXZpY2UKKyAqIEBm aWxlX3ByaXY6IFBvaW50ZXIgdG8gYSBkcm0gZmlsZSBwcml2YXRlIHN0cnVjdHVyZQorICogQHZm YnM6IFZNVyBmcmFtZWJ1ZmZlciBzdXJmYWNlIHRoYXQgbWF5IG5lZWQgYSBETUEgYnVmIHVwZGF0 ZQorICogQHg6IHRvcC9sZWZ0IGNvcm5lciBvZiB0aGUgY29udGVudCBhcmVhIHRvIGJsaXQgZnJv bQorICogQHk6IHRvcC9sZWZ0IGNvcm5lciBvZiB0aGUgY29udGVudCBhcmVhIHRvIGJsaXQgZnJv bQorICogQHdpZHRoOiB3aWR0aCBvZiB0aGUgYmxpdCBhcmVhCisgKiBAaGVpZ2h0OiBoZWlnaHQg b2YgdGhlIGJsaXQgYXJlYQorICoKKyAqIFRoZSBTVkdBIGRldmljZSBtYXkgaGF2ZSB0aGUgRE1B IGJ1ZiBjYWNoZWQsIHNvIGJlZm9yZSBsZXR0aW5nIHRoZQorICogZGV2aWNlIHVzZSBpdCBhcyB0 aGUgc291cmNlIGltYWdlIGZvciBhIHN1YnNlcXVlbnQgb3BlcmF0aW9uLCB3ZQorICogdXBkYXRl IHRoZSBjYWNoZWQgY29weS4KKyAqCisgKiBSRVRVUk5zOgorICogMCBvbiBzdWNjZXNzLCBlcnJv ciBjb2RlIG9uIGZhaWx1cmUKKyAqLworc3RhdGljIGludCB2bXdfc3RkdV9kbWFfdXBkYXRlKHN0 cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAgICAgc3RydWN0IGRybV9maWxlICpm aWxlX3ByaXYsCisJCQkgICAgICAgc3RydWN0IHZtd19mcmFtZWJ1ZmZlcl9zdXJmYWNlICp2ZmJz LAorCQkJICAgICAgIHVpbnQzMl90IHgsIHVpbnQzMl90IHksCisJCQkgICAgICAgdWludDMyX3Qg d2lkdGgsIHVpbnQzMl90IGhlaWdodCkKK3sKKwlzaXplX3QgZmlmb19zaXplOworCXN0cnVjdCB7 CisJCVNWR0EzZENtZEhlYWRlciBoZWFkZXI7CisJCVNWR0EzZENtZFVwZGF0ZUdCSW1hZ2UgYm9k eTsKKwl9IGltZ191cGRhdGVfY21kOworCisKKwkvKiBPbmx5IG5lZWQgdG8gZG8gdGhpcyBpZiB0 aGUgc3VyZmFjZSBpcyBhIERNQSBidWYgcHJveHkgKi8KKwlpZiAoIXZmYnMtPmlzX2RtYWJ1Zl9w cm94eSkKKwkJcmV0dXJuIDA7CisKKwlmaWZvX3NpemUgPSBzaXplb2YoaW1nX3VwZGF0ZV9jbWQp OworCisJbWVtc2V0KCZpbWdfdXBkYXRlX2NtZCwgMCwgZmlmb19zaXplKTsKKwlpbWdfdXBkYXRl X2NtZC5oZWFkZXIuaWQgICA9IFNWR0FfM0RfQ01EX1VQREFURV9HQl9JTUFHRTsKKwlpbWdfdXBk YXRlX2NtZC5oZWFkZXIuc2l6ZSA9IHNpemVvZihpbWdfdXBkYXRlX2NtZC5ib2R5KTsKKworCWlt Z191cGRhdGVfY21kLmJvZHkuaW1hZ2Uuc2lkID0gdmZicy0+c3VyZmFjZS0+cmVzLmlkOworCisJ aW1nX3VwZGF0ZV9jbWQuYm9keS5ib3gueCA9IHg7CisJaW1nX3VwZGF0ZV9jbWQuYm9keS5ib3gu eSA9IHk7CisJaW1nX3VwZGF0ZV9jbWQuYm9keS5ib3gudyA9IHdpZHRoOworCWltZ191cGRhdGVf Y21kLmJvZHkuYm94LmggPSBoZWlnaHQ7CisJaW1nX3VwZGF0ZV9jbWQuYm9keS5ib3guZCA9IDE7 CisKKwlyZXR1cm4gdm13X2V4ZWNidWZfcHJvY2VzcyhmaWxlX3ByaXYsIGRldl9wcml2LCBOVUxM LAorCQkJCSAgICh2b2lkICopICZpbWdfdXBkYXRlX2NtZCwKKwkJCQkgICBmaWZvX3NpemUsIDAs IFZNV19RVUlSS19TUkNfU0lEX09LLAorCQkJCSAgIE5VTEwsIE5VTEwpOworfQorCisKKworLyoq CiAgKiB2bXdfc3RkdV9jb250ZW50X2NvcHkgLSBjb3BpZXMgYW4gYXJlYSBmcm9tIHRoZSBjb250 ZW50IHRvIGRpc3BsYXkgc3VyZmFjZQogICoKICAqIEBkZXZfcHJpdjogIFZNVyBEUk0gZGV2aWNl CkBAIC0xNjYsMTEgKzIyMywxMyBAQCBzdGF0aWMgaW50IHZtd19zdGR1X2NvbnRlbnRfY29weShz dHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSB1aW50MzJfdCB3aWR0aCwgdWludDMy X3QgaGVpZ2h0LAogCQkJCSB1aW50MzJfdCBkaXNwbGF5X3gsIHVpbnQzMl90IGRpc3BsYXlfeSkK IHsKLQlzaXplX3QgZmlmb19zaXplOworCXN0cnVjdCB2bXdfZnJhbWVidWZmZXJfc3VyZmFjZSAq Y29udGVudF92ZmJzOworCXNpemVfdCBmaWZvX3NpemU7CQogCWludCByZXQ7CiAJdm9pZCAqY21k OworCXUzMiBxdWlya3MgPSBWTVdfUVVJUktfRFNUX1NJRF9PSzsKIAotCXN0cnVjdCB2bXdfc3Vy ZmFjZV9kbWEgeworCXN0cnVjdCB7CiAJCVNWR0EzZENtZEhlYWRlciAgICAgaGVhZGVyOwogCQlT VkdBM2RDbWRTdXJmYWNlRE1BIGJvZHk7CiAJCVNWR0EzZENvcHlCb3ggICAgICAgYXJlYTsKQEAg LTE5MywyNCArMjUyLDQzIEBAIHN0YXRpYyBpbnQgdm13X3N0ZHVfY29udGVudF9jb3B5KHN0cnVj dCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAorCiAJaWYg KHN0ZHUtPmNvbnRlbnRfZmJfdHlwZSA9PSBTRVBBUkFURV9ETUEpIHsKIAkJc3RydWN0IHZtd19m cmFtZWJ1ZmZlciAqY29udGVudF92ZmI7Ci0JCXN0cnVjdCB2bXdfZnJhbWVidWZmZXJfZG1hYnVm ICpjb250ZW50X3ZmYmQ7Ci0JCXN0cnVjdCB2bXdfZnJhbWVidWZmZXJfc3VyZmFjZSAqY29udGVu dF92ZmJzOwogCQlzdHJ1Y3QgZHJtX3Ztd19zaXplIGN1cl9zaXplID0gezB9OwogCQljb25zdCBz dHJ1Y3Qgc3ZnYTNkX3N1cmZhY2VfZGVzYyAqZGVzYzsKKwkJZW51bSBTVkdBM2RTdXJmYWNlRm9y bWF0IGZvcm1hdDsKIAkJU1ZHQTNkQ21kU3VyZmFjZURNQVN1ZmZpeCAqc3VmZml4OwogCQlTVkdB R3Vlc3RQdHIgcHRyOwogCisKIAkJY29udGVudF92ZmIgID0gdm13X2ZyYW1lYnVmZmVyX3RvX3Zm YihzdGR1LT5jb250ZW50X2ZiKTsKLQkJY29udGVudF92ZmJkID0gdm13X2ZyYW1lYnVmZmVyX3Rv X3ZmYmQoc3RkdS0+Y29udGVudF9mYik7Ci0JCWNvbnRlbnRfdmZicyA9IHZtd19mcmFtZWJ1ZmZl cl90b192ZmJzKHN0ZHUtPmNvbnRlbnRfZmIpOwogCiAJCWN1cl9zaXplLndpZHRoICA9IHdpZHRo OwogCQljdXJfc2l6ZS5oZWlnaHQgPSBoZWlnaHQ7CiAJCWN1cl9zaXplLmRlcHRoICA9IDE7CiAK LQkJZGVzYyA9IHN2Z2EzZHN1cmZhY2VfZ2V0X2Rlc2MoY29udGVudF92ZmJzLT5zdXJmYWNlLT5m b3JtYXQpOworCQkvKiBEZXJpdmUgYSBTVkdBM2RTdXJmYWNlRm9ybWF0IGZvciB0aGUgRE1BIGJ1 ZiAqLworCQlzd2l0Y2ggKGNvbnRlbnRfdmZiLT5iYXNlLmJpdHNfcGVyX3BpeGVsKSB7CisJCWNh c2UgMzI6CisJCQlmb3JtYXQgPSBTVkdBM0RfQThSOEc4Qjg7CisJCQlicmVhazsKKwkJY2FzZSAy NDoKKwkJCWZvcm1hdCA9IFNWR0EzRF9YOFI4RzhCODsKKwkJCWJyZWFrOworCQljYXNlIDE2Ogor CQkJZm9ybWF0ID0gU1ZHQTNEX1I1RzZCNTsKKwkJCWJyZWFrOworCQljYXNlIDE1OgorCQkJZm9y bWF0ID0gU1ZHQTNEX0ExUjVHNUI1OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlEUk1fRVJS T1IoIkludmFsaWQgY29sb3IgZGVwdGg6ICVkXG4iLAorCQkJCQljb250ZW50X3ZmYi0+YmFzZS5k ZXB0aCk7CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCisJCWRlc2MgPSBzdmdhM2RzdXJmYWNl X2dldF9kZXNjKGZvcm1hdCk7CiAKIAogCQlmaWZvX3NpemUgPSBzaXplb2Yoc3VyZmFjZV9kbWFf Y21kKTsKQEAgLTI1MCwxOSArMzI4LDQwIEBAIHN0YXRpYyBpbnQgdm13X3N0ZHVfY29udGVudF9j b3B5KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAkJY21kID0gKHZvaWQgKikgJnN1 cmZhY2VfZG1hX2NtZDsKIAl9IGVsc2UgewotCQlzdHJ1Y3Qgdm13X2ZyYW1lYnVmZmVyICpjb250 ZW50X3ZmYjsKKwkJdTMyIHNyY19pZDsKKworCisJCWNvbnRlbnRfdmZicyA9IHZtd19mcmFtZWJ1 ZmZlcl90b192ZmJzKHN0ZHUtPmNvbnRlbnRfZmIpOworCisJCWlmIChjb250ZW50X3ZmYnMtPmlz X2RtYWJ1Zl9wcm94eSkgeworCQkJcmV0ID0gdm13X3N0ZHVfZG1hX3VwZGF0ZShkZXZfcHJpdiwg ZmlsZV9wcml2LAorCQkJCQkJICBjb250ZW50X3ZmYnMsCisJCQkJCQkgIGNvbnRlbnRfeCwgY29u dGVudF95LAorCQkJCQkJICB3aWR0aCwgaGVpZ2h0KTsKKworCQkJaWYgKHJldCAhPSAwKSB7CisJ CQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gdXBkYXRlIGNhY2hlZCBETUEgYnVmXG4iKTsKKwkJCQly ZXR1cm4gcmV0OworCQkJfQogCi0JCWNvbnRlbnRfdmZiID0gdm13X2ZyYW1lYnVmZmVyX3RvX3Zm YihzdGR1LT5jb250ZW50X2ZiKTsKKwkJCXF1aXJrcyB8PSBWTVdfUVVJUktfU1JDX1NJRF9PSzsK KwkJCXNyY19pZCA9IGNvbnRlbnRfdmZicy0+c3VyZmFjZS0+cmVzLmlkOworCQl9IGVsc2Ugewor CQkJc3RydWN0IHZtd19mcmFtZWJ1ZmZlciAqY29udGVudF92ZmI7CiAKKwkJCWNvbnRlbnRfdmZi ID0gdm13X2ZyYW1lYnVmZmVyX3RvX3ZmYihzdGR1LT5jb250ZW50X2ZiKTsKKwkJCXNyY19pZCA9 IGNvbnRlbnRfdmZiLT51c2VyX2hhbmRsZTsKKwkJfQorIAogCQlmaWZvX3NpemUgPSBzaXplb2Yo c3VyZmFjZV9jcHlfY21kKTsKIAotCQltZW1zZXQoJnN1cmZhY2VfY3B5X2NtZCwgMCwgc2l6ZW9m KHN1cmZhY2VfY3B5X2NtZCkpOworCQltZW1zZXQoJnN1cmZhY2VfY3B5X2NtZCwgMCwgZmlmb19z aXplKTsKIAogCQlzdXJmYWNlX2NweV9jbWQuaGVhZGVyLmlkICAgPSBTVkdBXzNEX0NNRF9TVVJG QUNFX0NPUFk7CiAJCXN1cmZhY2VfY3B5X2NtZC5oZWFkZXIuc2l6ZSA9IHNpemVvZihzdXJmYWNl X2NweV9jbWQuYm9keSkgKwogCQkJCQkgICAgICBzaXplb2Yoc3VyZmFjZV9jcHlfY21kLmFyZWEp OwogCi0JCXN1cmZhY2VfY3B5X2NtZC5ib2R5LnNyYy5zaWQgID0gY29udGVudF92ZmItPnVzZXJf aGFuZGxlOworCQlzdXJmYWNlX2NweV9jbWQuYm9keS5zcmMuc2lkICA9IHNyY19pZDsKIAkJc3Vy ZmFjZV9jcHlfY21kLmJvZHkuZGVzdC5zaWQgPSBzdGR1LT5kaXNwbGF5X3NyZi0+cmVzLmlkOwog CiAJCXN1cmZhY2VfY3B5X2NtZC5hcmVhLnNyY3ggPSBjb250ZW50X3g7CkBAIC0yNzYsOCArMzc1 LDExIEBAIHN0YXRpYyBpbnQgdm13X3N0ZHVfY29udGVudF9jb3B5KHN0cnVjdCB2bXdfcHJpdmF0 ZSAqZGV2X3ByaXYsCiAJCWNtZCA9ICh2b2lkICopICZzdXJmYWNlX2NweV9jbWQ7CiAJfQogCi0J cmV0ID0gdm13X2V4ZWNidWZfcHJvY2VzcyhmaWxlX3ByaXYsIGRldl9wcml2LCBOVUxMLCBjbWQs Ci0JCQkJICBmaWZvX3NpemUsIDAsIFZNV19RVUlSS19TQ1JFRU5UQVJHRVQsCisKKworCXJldCA9 IHZtd19leGVjYnVmX3Byb2Nlc3MoZmlsZV9wcml2LCBkZXZfcHJpdiwgTlVMTCwKKwkJCQkgICh2 b2lkICopIGNtZCwKKwkJCQkgIGZpZm9fc2l6ZSwgMCwgcXVpcmtzLAogCQkJCSAgTlVMTCwgTlVM TCk7CiAKIAlyZXR1cm4gcmV0OwpAQCAtMzkxLDcgKzQ5Myw4IEBAIHN0YXRpYyBpbnQgdm13X3N0 ZHVfYmluZF9zdChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogICogdm13X3N0ZHVfdXBk YXRlX3N0IC0gVXBkYXRlcyBhIFNjcmVlbiBUYXJnZXQKICAqCiAgKiBAZGV2X3ByaXY6IFZNVyBE Uk0gZGV2aWNlCi0gKiBAZmlsZV9wcml2OiBQb2ludGVyIHRvIGEgZHJtIGZpbGUgcHJpdmF0ZSBz dHJ1Y3R1cmUKKyAqIEBmaWxlX3ByaXY6IFBvaW50ZXIgdG8gRFJNIGZpbGUgcHJpdmF0ZSBzdHJ1 Y3R1cmUuICBTZXQgdG8gTlVMTCB3aGVuCisgKiAgICAgICAgICAgICB3ZSB3YW50IHRvIGJsYW5r IGRpc3BsYXkuCiAgKiBAc3RkdTogZGlzcGxheSB1bml0IGFmZmVjdGVkCiAgKiBAdXBkYXRlX2Fy ZWE6IGFyZWEgdGhhdCBuZWVkcyB0byBiZSB1cGRhdGVkCiAgKgpAQCAtNDEyLDYgKzUxNSw3IEBA IHN0YXRpYyBpbnQgdm13X3N0ZHVfdXBkYXRlX3N0KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3By aXYsCiAJdTMyIHdpZHRoLCBoZWlnaHQ7CiAJdTMyIGRpc3BsYXlfdXBkYXRlX3gsIGRpc3BsYXlf dXBkYXRlX3k7CiAJdW5zaWduZWQgc2hvcnQgZGlzcGxheV94MSwgZGlzcGxheV95MSwgZGlzcGxh eV94MiwgZGlzcGxheV95MjsKKwlpbnQgcmV0OwogCiAJc3RydWN0IHsKIAkJU1ZHQTNkQ21kSGVh ZGVyIGhlYWRlcjsKQEAgLTQ0NCw4ICs1NDgsMTEgQEAgc3RhdGljIGludCB2bXdfc3RkdV91cGRh dGVfc3Qoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKIAloZWlnaHQgPSBtaW4odXBkYXRl X2FyZWEtPnkyLCBkaXNwbGF5X3kyKSAtCiAJCSBtYXgodXBkYXRlX2FyZWEtPnkxLCBkaXNwbGF5 X3kxKTsKIAorCS8qCisJICogSWYgY29udGVudCBpcyBvbiBhIHNlcGFyYXRlIHN1cmZhY2UsIHRo ZW4gY29weSB0aGUgZGlydHkgYXJlYSB0bworCSAqIHRoZSBkaXNwbGF5IHN1cmZhY2UKKwkgKi8K IAlpZiAoZmlsZV9wcml2ICYmIHN0ZHUtPmNvbnRlbnRfZmJfdHlwZSAhPSBTQU1FX0FTX0RJU1BM QVkpIHsKLQkJaW50IHJldDsKIAogCQlyZXQgPSB2bXdfc3RkdV9jb250ZW50X2NvcHkoZGV2X3By aXYsIGZpbGVfcHJpdiwKIAkJCQkJICAgIHN0ZHUsCkBAIC00NTksNiArNTY2LDI5IEBAIHN0YXRp YyBpbnQgdm13X3N0ZHVfdXBkYXRlX3N0KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ CX0KIAl9CiAKKworCS8qCisJICogSWYgdGhlIGRpc3BsYXkgc3VyZmFjZSBpcyB0aGUgc2FtZSBh cyB0aGUgY29udGVudCBzdXJmYWNlLCB0aGVuCisJICogaXQgbWF5IGJlIGJhY2tlZCBieSBhIERN QSBidWYuICBJZiBpdCBpcyB0aGVuIHdlIG5lZWQgdG8gdXBkYXRlCisJICogdGhlIGRldmljZSdz IGNhY2hlZCBjb3B5IG9mIHRoZSBETUEgYnVmIGJlZm9yZSBpc3N1aW5nIHRoZSBzY3JlZW4KKwkg KiB0YXJnZXQgdXBkYXRlLgorCSAqLworCWlmIChmaWxlX3ByaXYgJiYgc3RkdS0+Y29udGVudF9m Yl90eXBlID09IFNBTUVfQVNfRElTUExBWSkgeworCQlzdHJ1Y3Qgdm13X2ZyYW1lYnVmZmVyX3N1 cmZhY2UgKnZmYnM7CisKKwkJdmZicyA9IHZtd19mcmFtZWJ1ZmZlcl90b192ZmJzKHN0ZHUtPmNv bnRlbnRfZmIpOworCQlyZXQgPSB2bXdfc3RkdV9kbWFfdXBkYXRlKGRldl9wcml2LCBmaWxlX3By aXYsCisJCQkJCSAgdmZicywKKwkJCQkJICBtYXgodXBkYXRlX2FyZWEtPngxLCBkaXNwbGF5X3gx KSwKKwkJCQkJICBtYXgodXBkYXRlX2FyZWEtPnkxLCBkaXNwbGF5X3kxKSwKKwkJCQkJICB3aWR0 aCwgaGVpZ2h0KTsKKworCQlpZiAocmV0ICE9IDApIHsKKwkJCURSTV9FUlJPUigiRmFpbGVkIHRv IHVwZGF0ZSBjYWNoZWQgRE1BIGJ1ZmZlclxuIik7CisJCQlyZXR1cm4gcmV0OworCQl9CisJfQor CiAJY21kID0gdm13X2ZpZm9fcmVzZXJ2ZShkZXZfcHJpdiwgc2l6ZW9mKCpjbWQpKTsKIAogCWlm ICh1bmxpa2VseShjbWQgPT0gTlVMTCkpIHsKQEAgLTEwNjYsOCArMTE5Niw3IEBAIGludCB2bXdf a21zX3N0ZHVfaW5pdF9kaXNwbGF5KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaWYg KCFWTVdHRlhfRU5BQkxFX1NDUkVFTl9UQVJHRVRfT1RBQkxFKQogCQlyZXR1cm4gLUVOT1NZUzsK IAotCWlmICghKGRldl9wcml2LT5jYXBhYmlsaXRpZXMgJiBTVkdBX0NBUF9HQk9CSkVDVFMpIHx8 Ci0JICAgICEoZGV2X3ByaXYtPmNhcGFiaWxpdGllcyAmIFNWR0FfQ0FQXzNEKSkKKwlpZiAoIShk ZXZfcHJpdi0+Y2FwYWJpbGl0aWVzICYgU1ZHQV9DQVBfR0JPQkpFQ1RTKSkKIAkJcmV0dXJuIC1F Tk9TWVM7CiAKIAlyZXQgPSBkcm1fdmJsYW5rX2luaXQoZGV2LCBWTVdHRlhfTlVNX0RJU1BMQVlf VU5JVFMpOwpAQCAtMTMzMyw3ICsxNDYyLDcgQEAgaW50IHZtd19rbXNfc3RkdV9wcmVzZW50KHN0 cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWNtZC0+Ym9keS5kZXN0LnNpZCA9IHN0ZHVb Y3VyX2R1XS0+ZGlzcGxheV9zcmYtPnJlcy5pZDsKIAogCQlyZXQgPSB2bXdfZXhlY2J1Zl9wcm9j ZXNzKGZpbGVfcHJpdiwgZGV2X3ByaXYsIE5VTEwsIGNtZCwKLQkJCQkJICBmaWZvX3NpemUsIDAs IFZNV19RVUlSS19TQ1JFRU5UQVJHRVQsCisJCQkJCSAgZmlmb19zaXplLCAwLCBWTVdfUVVJUktf RFNUX1NJRF9PSywKIAkJCQkJICBOVUxMLCBOVUxMKTsKIAogCQlpZiAodW5saWtlbHkocmV0ICE9 IDApKQotLSAKMi4xLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=