From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 30/37] drm/i915: Introduce i915_ggtt_offset() Date: Fri, 12 Aug 2016 07:54:20 +0100 Message-ID: <1470984867-7132-30-git-send-email-chris@chris-wilson.co.uk> References: <1470984867-7132-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 55DEF6EA9D for ; Fri, 12 Aug 2016 06:55:09 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id i5so1169905wmg.2 for ; Thu, 11 Aug 2016 23:55:09 -0700 (PDT) In-Reply-To: <1470984867-7132-1-git-send-email-chris@chris-wilson.co.uk> 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 VGhpcyBsaXR0bGUgaGVscGVyIG9ubHkgZXhpc3RzIHRvIHNhZmVseSBkaXNjYXJkIHRoZSB1cHBl ciB1bnVzZWQgMzJiaXRzCm9mIHRoZSBnZW5lcmFsIDY0LWJpdCBWTUEgYWRkcmVzcyAtIGFzIHdl IGtub3cgdGhhdCBhbGwgR2xvYmFsIEdUVApjdXJyZW50bHkgYXJlIGxlc3MgdGhhbiA0R2lCIGlu IHNpemUgYW5kIHNvIHRoYXQgdGhlIHVwcGVyIGJpdHMgbXVzdCBiZQp6ZXJvLiBJbiBtYW55IHBs YWNlcywgd2UgdXNlIGEgdTMyIGZvciB0aGUgZ2xvYmFsIEdUVCBvZmZzZXQgYW5kIHdlIHdhbnQK dG8gZG9jdW1lbnQgd2hlcmUgd2UgYXJlIGRpc2NhcmRpbmcgdGhlIGZ1bGwgVk1BIG9mZnNldC4K ClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICB8ICAyICstCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAgMiArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgIHwgMTEgKysrKystLS0tLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICB8ICA2ICsrKystLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggICAgICAgIHwgIDkgKysrKysrKysrCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCAxNSArKysrKysrKy0t LS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAgICB8IDEwICsr Ky0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICAgICB8ICA0 ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgICAgICAgICB8ICA2ICsr Ky0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jICAgIHwgIDYgKysr LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgfCAyMCArKysr KysrKysrKy0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jICAg ICAgIHwgMTAgKysrKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jICAgIHwgMjggKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogMTMgZmlsZXMgY2hhbmdl ZCwgNzAgaW5zZXJ0aW9ucygrKSwgNTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYwppbmRleCAyMTk2MTMwNDI4NGUuLjgyNjUyYWQyOGNkNCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTIwMDgsNyArMjAwOCw3IEBAIHN0YXRpYyB2b2lkIGk5 MTVfZHVtcF9scmNfb2JqKHN0cnVjdCBzZXFfZmlsZSAqbSwKIAogCWlmICh2bWEtPmZsYWdzICYg STkxNV9WTUFfR0xPQkFMX0JJTkQpCiAJCXNlcV9wcmludGYobSwgIlx0Qm91bmQgaW4gR0dUVCBh dCAweCUwOHhcbiIsCi0JCQkgICBsb3dlcl8zMl9iaXRzKHZtYS0+bm9kZS5zdGFydCkpOworCQkJ ICAgaTkxNV9nZ3R0X29mZnNldCh2bWEpKTsKIAogCWlmIChpOTE1X2dlbV9vYmplY3RfZ2V0X3Bh Z2VzKHZtYS0+b2JqKSkgewogCQlzZXFfcHV0cyhtLCAiXHRGYWlsZWQgdG8gZ2V0IHBhZ2VzIGZv ciBjb250ZXh0IG9iamVjdFxuXG4iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGUyMjQ0 NWUwYjAwNC4uOTQxNGYzZDRjMmIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTMzMjQs NyArMzMyNCw3IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwogaTkxNV9nZW1fb2JqZWN0 X2dndHRfb2Zmc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAogCQkJICAgIGNvbnN0 IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldykKIHsKLQlyZXR1cm4gaTkxNV9nZW1fb2JqZWN0 X3RvX2dndHQobywgdmlldyktPm5vZGUuc3RhcnQ7CisJcmV0dXJuIGk5MTVfZ2d0dF9vZmZzZXQo aTkxNV9nZW1fb2JqZWN0X3RvX2dndHQobywgdmlldykpOwogfQogCiAvKiBpOTE1X2dlbV9mZW5j ZS5jICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCBkNDkzOGM0ZmQ5YzYuLmVhZjg1YmJi Zjk5NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC03NTgsNyArNzU4LDcgQEAgaTkxNV9n ZW1fZ3R0X3ByZWFkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIAkJaTkxNV9nZW1fb2JqZWN0 X3Bpbl9wYWdlcyhvYmopOwogCX0gZWxzZSB7Ci0JCW5vZGUuc3RhcnQgPSB2bWEtPm5vZGUuc3Rh cnQ7CisJCW5vZGUuc3RhcnQgPSBpOTE1X2dndHRfb2Zmc2V0KHZtYSk7CiAJCW5vZGUuYWxsb2Nh dGVkID0gZmFsc2U7CiAJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9wdXRfZmVuY2Uob2JqKTsKIAkJ aWYgKHJldCkKQEAgLTEwNjIsNyArMTA2Miw3IEBAIGk5MTVfZ2VtX2d0dF9wd3JpdGVfZmFzdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAogCQlpOTE1X2dlbV9vYmplY3RfcGluX3Bh Z2VzKG9iaik7CiAJfSBlbHNlIHsKLQkJbm9kZS5zdGFydCA9IHZtYS0+bm9kZS5zdGFydDsKKwkJ bm9kZS5zdGFydCA9IGk5MTVfZ2d0dF9vZmZzZXQodm1hKTsKIAkJbm9kZS5hbGxvY2F0ZWQgPSBm YWxzZTsKIAkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3B1dF9mZW5jZShvYmopOwogCQlpZiAocmV0 KQpAQCAtMTcwMyw3ICsxNzAzLDcgQEAgaW50IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqYXJlYSwgc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJCWdvdG8gZXJyX3VucGluOwog CiAJLyogRmluYWxseSwgcmVtYXAgaXQgdXNpbmcgdGhlIG5ldyBHVFQgb2Zmc2V0ICovCi0JcGZu ID0gZ2d0dC0+bWFwcGFibGVfYmFzZSArIHZtYS0+bm9kZS5zdGFydDsKKwlwZm4gPSBnZ3R0LT5t YXBwYWJsZV9iYXNlICsgaTkxNV9nZ3R0X29mZnNldCh2bWEpOwogCXBmbiA+Pj0gUEFHRV9TSElG VDsKIAogCWlmICh1bmxpa2VseSh2aWV3LnR5cGUgPT0gSTkxNV9HR1RUX1ZJRVdfUEFSVElBTCkp IHsKQEAgLTM3MTIsMTAgKzM3MTIsOSBAQCBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAogCQlXQVJOKGk5MTVfdm1hX2lzX3Bpbm5lZCh2 bWEpLAogCQkgICAgICJibyBpcyBhbHJlYWR5IHBpbm5lZCBpbiBnZ3R0IHdpdGggaW5jb3JyZWN0 IGFsaWdubWVudDoiCi0JCSAgICAgIiBvZmZzZXQ9JTA4eCAlMDh4LCByZXEuYWxpZ25tZW50PSVs bHgsIHJlcS5tYXBfYW5kX2ZlbmNlYWJsZT0lZCwiCisJCSAgICAgIiBvZmZzZXQ9JTA4eCwgcmVx LmFsaWdubWVudD0lbGx4LCByZXEubWFwX2FuZF9mZW5jZWFibGU9JWQsIgogCQkgICAgICIgb2Jq LT5tYXBfYW5kX2ZlbmNlYWJsZT0lZFxuIiwKLQkJICAgICB1cHBlcl8zMl9iaXRzKHZtYS0+bm9k ZS5zdGFydCksCi0JCSAgICAgbG93ZXJfMzJfYml0cyh2bWEtPm5vZGUuc3RhcnQpLAorCQkgICAg IGk5MTVfZ2d0dF9vZmZzZXQodm1hKSwKIAkJICAgICBhbGlnbm1lbnQsCiAJCSAgICAgISEoZmxh Z3MgJiBQSU5fTUFQUEFCTEUpLAogCQkgICAgIG9iai0+bWFwX2FuZF9mZW5jZWFibGUpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IGU1NjYxNjdkOTQ0MS4uOThk Mjk1NmY5MWY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCkBAIC02 MzEsNyArNjMxLDggQEAgbWlfc2V0X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEsIHUzMiBod19mbGFncykKIAogCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsK IAlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfU0VUX0NPTlRFWFQpOwotCWludGVsX3JpbmdfZW1p dChyaW5nLCByZXEtPmN0eC0+ZW5naW5lW1JDU10uc3RhdGUtPm5vZGUuc3RhcnQgfCBmbGFncyk7 CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsCisJCQlpOTE1X2dndHRfb2Zmc2V0KHJlcS0+Y3R4LT5l bmdpbmVbUkNTXS5zdGF0ZSkgfCBmbGFncyk7CiAJLyoKIAkgKiB3L2E6IE1JX1NFVF9DT05URVhU IG11c3QgYWx3YXlzIGJlIGZvbGxvd2VkIGJ5IE1JX05PT1AKIAkgKiBXYU1pU2V0Q29udGV4dF9I YW5nOnNuYixpdmIsdmx2CkBAIC02NjAsNyArNjYxLDggQEAgbWlfc2V0X2NvbnRleHQoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBod19mbGFncykKIAkJCQkJTUlfU1RPUkVf UkVHSVNURVJfTUVNIHwKIAkJCQkJTUlfU1JNX0xSTV9HTE9CQUxfR1RUKTsKIAkJCWludGVsX3Jp bmdfZW1pdF9yZWcocmluZywgbGFzdF9yZWcpOwotCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGVu Z2luZS0+c2NyYXRjaC0+bm9kZS5zdGFydCk7CisJCQlpbnRlbF9yaW5nX2VtaXQocmluZywKKwkJ CQkJaTkxNV9nZ3R0X29mZnNldChlbmdpbmUtPnNjcmF0Y2gpKTsKIAkJCWludGVsX3JpbmdfZW1p dChyaW5nLCBNSV9OT09QKTsKIAkJfQogCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfQVJCX09O X09GRiB8IE1JX0FSQl9FTkFCTEUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAppbmRl eCA3MTUxM2IxM2NhOTQuLmQ2ZTRiNjUyOTE5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmgKQEAgLTI3Miw2ICsyNzIsMTUgQEAgc3RhdGljIGlubGluZSBib29sIGk5MTVfdm1hX2hh c19hY3RpdmVfZW5naW5lKGNvbnN0IHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCXJldHVybiB2bWEt PmFjdGl2ZSAmIEJJVChlbmdpbmUpOwogfQogCitzdGF0aWMgaW5saW5lIHUzMiBpOTE1X2dndHRf b2Zmc2V0KGNvbnN0IHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQoreworCUdFTV9CVUdfT04oIWk5MTVf dm1hX2lzX2dndHQodm1hKSk7CisJR0VNX0JVR19PTighdm1hLT5ub2RlLmFsbG9jYXRlZCk7CisJ R0VNX0JVR19PTih1cHBlcl8zMl9iaXRzKHZtYS0+bm9kZS5zdGFydCkpOworCUdFTV9CVUdfT04o dXBwZXJfMzJfYml0cyh2bWEtPm5vZGUuc3RhcnQgKyB2bWEtPm5vZGUuc2l6ZSAtIDEpKTsKKwly ZXR1cm4gbG93ZXJfMzJfYml0cyh2bWEtPm5vZGUuc3RhcnQpOworfQorCiBzdHJ1Y3QgaTkxNV9w YWdlX2RtYSB7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7CiAJdW5pb24gewpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCmluZGV4IDc1ZGIyZGE3NmI0MS4uZWU3NzMwNWYz NTFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9u LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCkBAIC0z NTgsMTEgKzM1OCwxMSBAQCBzdGF0aWMgdm9pZCBndWNfaW5pdF9jdHhfZGVzYyhzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMsCiAKIAkJLyogVGhlIHN0YXRlIHBhZ2UgaXMgYWZ0ZXIgUFBIV1NQICovCiAJ CWxyYy0+cmluZ19sY3JhID0KLQkJCWNlLT5zdGF0ZS0+bm9kZS5zdGFydCArIExSQ19TVEFURV9Q TiAqIFBBR0VfU0laRTsKKwkJCWk5MTVfZ2d0dF9vZmZzZXQoY2UtPnN0YXRlKSArIExSQ19TVEFU RV9QTiAqIFBBR0VfU0laRTsKIAkJbHJjLT5jb250ZXh0X2lkID0gKGNsaWVudC0+Y3R4X2luZGV4 IDw8IEdVQ19FTENfQ1RYSURfT0ZGU0VUKSB8CiAJCQkJKGd1Y19lbmdpbmVfaWQgPDwgR1VDX0VM Q19FTkdJTkVfT0ZGU0VUKTsKIAotCQlscmMtPnJpbmdfYmVnaW4gPSBjZS0+cmluZy0+dm1hLT5u b2RlLnN0YXJ0OworCQlscmMtPnJpbmdfYmVnaW4gPSBpOTE1X2dndHRfb2Zmc2V0KGNlLT5yaW5n LT52bWEpOwogCQlscmMtPnJpbmdfZW5kID0gbHJjLT5yaW5nX2JlZ2luICsgY2UtPnJpbmctPnNp emUgLSAxOwogCQlscmMtPnJpbmdfbmV4dF9mcmVlX2xvY2F0aW9uID0gbHJjLT5yaW5nX2JlZ2lu OwogCQlscmMtPnJpbmdfY3VycmVudF90YWlsX3BvaW50ZXJfdmFsdWUgPSAwOwpAQCAtMzc4LDcg KzM3OCw3IEBAIHN0YXRpYyB2b2lkIGd1Y19pbml0X2N0eF9kZXNjKHN0cnVjdCBpbnRlbF9ndWMg Kmd1YywKIAkgKiBUaGUgZG9vcmJlbGwsIHByb2Nlc3MgZGVzY3JpcHRvciwgYW5kIHdvcmtxdWV1 ZSBhcmUgYWxsIHBhcnRzCiAJICogb2YgdGhlIGNsaWVudCBvYmplY3QsIHdoaWNoIHRoZSBHdUMg d2lsbCByZWZlcmVuY2UgdmlhIHRoZSBHR1RUCiAJICovCi0JZ2Z4X2FkZHIgPSBjbGllbnQtPnZt YS0+bm9kZS5zdGFydDsKKwlnZnhfYWRkciA9IGk5MTVfZ2d0dF9vZmZzZXQoY2xpZW50LT52bWEp OwogCWRlc2MuZGJfdHJpZ2dlcl9waHkgPSBzZ19kbWFfYWRkcmVzcyhjbGllbnQtPnZtYS0+cGFn ZXMtPnNnbCkgKwogCQkJCWNsaWVudC0+ZG9vcmJlbGxfb2Zmc2V0OwogCWRlc2MuZGJfdHJpZ2dl cl9jcHUgPSAodWludHB0cl90KWNsaWVudC0+Y2xpZW50X2Jhc2UgKwpAQCAtODYyLDcgKzg2Miw3 IEBAIHN0YXRpYyB2b2lkIGd1Y19jcmVhdGVfbG9nKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAkJ KEdVQ19MT0dfSVNSX1BBR0VTIDw8IEdVQ19MT0dfSVNSX1NISUZUKSB8CiAJCShHVUNfTE9HX0NS QVNIX1BBR0VTIDw8IEdVQ19MT0dfQ1JBU0hfU0hJRlQpOwogCi0Jb2Zmc2V0ID0gdm1hLT5ub2Rl LnN0YXJ0ID4+IFBBR0VfU0hJRlQ7IC8qIGluIHBhZ2VzICovCisJb2Zmc2V0ID0gaTkxNV9nZ3R0 X29mZnNldCh2bWEpID4+IFBBR0VfU0hJRlQ7IC8qIGluIHBhZ2VzICovCiAJZ3VjLT5sb2dfZmxh Z3MgPSAob2Zmc2V0IDw8IEdVQ19MT0dfQlVGX0FERFJfU0hJRlQpIHwgZmxhZ3M7CiB9CiAKQEAg LTkzMyw3ICs5MzMsOCBAQCBzdGF0aWMgdm9pZCBndWNfY3JlYXRlX2FkcyhzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCiAJcG9saWNpZXMgPSAodm9pZCAqKWFkcyArIHNpemVvZihzdHJ1Y3QgZ3VjX2Fk cyk7CiAJaW5pdF9ndWNfcG9saWNpZXMocG9saWNpZXMpOwogCi0JYWRzLT5zY2hlZHVsZXJfcG9s aWNpZXMgPSB2bWEtPm5vZGUuc3RhcnQgKyBzaXplb2Yoc3RydWN0IGd1Y19hZHMpOworCWFkcy0+ c2NoZWR1bGVyX3BvbGljaWVzID0KKwkJaTkxNV9nZ3R0X29mZnNldCh2bWEpICsgc2l6ZW9mKHN0 cnVjdCBndWNfYWRzKTsKIAogCS8qIE1NSU8gcmVnIHN0YXRlICovCiAJcmVnX3N0YXRlID0gKHZv aWQgKilwb2xpY2llcyArIHNpemVvZihzdHJ1Y3QgZ3VjX3BvbGljaWVzKTsKQEAgLTEwNjEsNyAr MTA2Miw3IEBAIGludCBpbnRlbF9ndWNfc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog CS8qIGFueSB2YWx1ZSBncmVhdGVyIHRoYW4gR1VDX1BPV0VSX0QwICovCiAJZGF0YVsxXSA9IEdV Q19QT1dFUl9EMTsKIAkvKiBmaXJzdCBwYWdlIGlzIHNoYXJlZCBkYXRhIHdpdGggR3VDICovCi0J ZGF0YVsyXSA9IGN0eC0+ZW5naW5lW1JDU10uc3RhdGUtPm5vZGUuc3RhcnQ7CisJZGF0YVsyXSA9 IGk5MTVfZ2d0dF9vZmZzZXQoY3R4LT5lbmdpbmVbUkNTXS5zdGF0ZSk7CiAKIAlyZXR1cm4gaG9z dDJndWNfYWN0aW9uKGd1YywgZGF0YSwgQVJSQVlfU0laRShkYXRhKSk7CiB9CkBAIC0xMDg2LDcg KzEwODcsNyBAQCBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog CWRhdGFbMF0gPSBIT1NUMkdVQ19BQ1RJT05fRVhJVF9TX1NUQVRFOwogCWRhdGFbMV0gPSBHVUNf UE9XRVJfRDA7CiAJLyogZmlyc3QgcGFnZSBpcyBzaGFyZWQgZGF0YSB3aXRoIEd1QyAqLwotCWRh dGFbMl0gPSBjdHgtPmVuZ2luZVtSQ1NdLnN0YXRlLT5ub2RlLnN0YXJ0OworCWRhdGFbMl0gPSBp OTE1X2dndHRfb2Zmc2V0KGN0eC0+ZW5naW5lW1JDU10uc3RhdGUpOwogCiAJcmV0dXJuIGhvc3Qy Z3VjX2FjdGlvbihndWMsIGRhdGEsIEFSUkFZX1NJWkUoZGF0YSkpOwogfQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IGU1ODJiNDI2NzAzNi4uMzFlYWVlZGZhZDMwIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0zMjQxLDcgKzMyNDEsNiBAQCB1MzIg aW50ZWxfZmJfZ3R0X29mZnNldChzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKIAlzdHJ1Y3QgaTkx NV9nZ3R0X3ZpZXcgdmlldzsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKLQl1NjQgb2Zmc2V0Owog CiAJaW50ZWxfZmlsbF9mYl9nZ3R0X3ZpZXcoJnZpZXcsIGZiLCByb3RhdGlvbik7CiAKQEAgLTMy NTAsMTEgKzMyNDksNyBAQCB1MzIgaW50ZWxfZmJfZ3R0X29mZnNldChzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiwKIAkJIHZpZXcudHlwZSkpCiAJCXJldHVybiAtMTsKIAotCW9mZnNldCA9IHZt YS0+bm9kZS5zdGFydDsKLQotCVdBUk5fT04odXBwZXJfMzJfYml0cyhvZmZzZXQpKTsKLQotCXJl dHVybiBsb3dlcl8zMl9iaXRzKG9mZnNldCk7CisJcmV0dXJuIGk5MTVfZ2d0dF9vZmZzZXQodm1h KTsKIH0KIAogc3RhdGljIHZvaWQgc2tsX2RldGFjaF9zY2FsZXIoc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMsIGludCBpZCkKQEAgLTExODA0LDcgKzExNzk5LDggQEAgc3RhdGljIGludCBp bnRlbF9nZW43X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCWludGVsX3Jp bmdfZW1pdChyaW5nLCBNSV9TVE9SRV9SRUdJU1RFUl9NRU0gfAogCQkJCQkgICAgICBNSV9TUk1f TFJNX0dMT0JBTF9HVFQpOwogCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHJpbmcsIERFUlJNUik7Ci0J CWludGVsX3JpbmdfZW1pdChyaW5nLCByZXEtPmVuZ2luZS0+c2NyYXRjaC0+bm9kZS5zdGFydCAr IDI1Nik7CisJCWludGVsX3JpbmdfZW1pdChyaW5nLAorCQkJCWk5MTVfZ2d0dF9vZmZzZXQocmVx LT5lbmdpbmUtPnNjcmF0Y2gpICsgMjU2KTsKIAkJaWYgKElTX0dFTjgoZGV2KSkgewogCQkJaW50 ZWxfcmluZ19lbWl0KHJpbmcsIDApOwogCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1Ap OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCBmMDJkNjZiYmVjNGIu LjVlYzhhMTBmZDE4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5n aW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKQEAg LTI2OCw4ICsyNjgsOCBAQCBpbnQgaW50ZWxfZW5naW5lX2NyZWF0ZV9zY3JhdGNoKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHNpemUpCiAJCWdvdG8gZXJyX3VucmVmOwogCiAJ ZW5naW5lLT5zY3JhdGNoID0gdm1hOwotCURSTV9ERUJVR19EUklWRVIoIiVzIHBpcGUgY29udHJv bCBvZmZzZXQ6IDB4JTA4bGx4XG4iLAotCQkJIGVuZ2luZS0+bmFtZSwgdm1hLT5ub2RlLnN0YXJ0 KTsKKwlEUk1fREVCVUdfRFJJVkVSKCIlcyBwaXBlIGNvbnRyb2wgb2Zmc2V0OiAweCUwOHhcbiIs CisJCQkgZW5naW5lLT5uYW1lLCBpOTE1X2dndHRfb2Zmc2V0KHZtYSkpOwogCXJldHVybiAwOwog CiBlcnJfdW5yZWY6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRl di5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwppbmRleCA4NjNlN2E5MWVj ZTAuLmNmZTI4ZDE5YWQ2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZmJkZXYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCkBAIC0yNDks NyArMjQ5LDcgQEAgc3RhdGljIGludCBpbnRlbGZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBl ciAqaGVscGVyLAogCWluZm8tPmFwZXJ0dXJlcy0+cmFuZ2VzWzBdLmJhc2UgPSBkZXYtPm1vZGVf Y29uZmlnLmZiX2Jhc2U7CiAJaW5mby0+YXBlcnR1cmVzLT5yYW5nZXNbMF0uc2l6ZSA9IGdndHQt Pm1hcHBhYmxlX2VuZDsKIAotCWluZm8tPmZpeC5zbWVtX3N0YXJ0ID0gZGV2LT5tb2RlX2NvbmZp Zy5mYl9iYXNlICsgdm1hLT5ub2RlLnN0YXJ0OworCWluZm8tPmZpeC5zbWVtX3N0YXJ0ID0gZGV2 LT5tb2RlX2NvbmZpZy5mYl9iYXNlICsgaTkxNV9nZ3R0X29mZnNldCh2bWEpOwogCWluZm8tPmZp eC5zbWVtX2xlbiA9IHZtYS0+bm9kZS5zaXplOwogCiAJdmFkZHIgPSBpOTE1X3ZtYV9waW5faW9t YXAodm1hKTsKQEAgLTI3Niw4ICsyNzYsOCBAQCBzdGF0aWMgaW50IGludGVsZmJfY3JlYXRlKHN0 cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCiAKIAkvKiBVc2UgZGVmYXVsdCBzY3JhdGNoIHBp eG1hcCAoaW5mby0+cGl4bWFwLmZsYWdzID0gRkJfUElYTUFQX1NZU1RFTSkgKi8KIAotCURSTV9E RUJVR19LTVMoImFsbG9jYXRlZCAlZHglZCBmYjogMHglMDhsbHhcbiIsCi0JCSAgICAgIGZiLT53 aWR0aCwgZmItPmhlaWdodCwgdm1hLT5ub2RlLnN0YXJ0KTsKKwlEUk1fREVCVUdfS01TKCJhbGxv Y2F0ZWQgJWR4JWQgZmI6IDB4JTA4eFxuIiwKKwkJICAgICAgZmItPndpZHRoLCBmYi0+aGVpZ2h0 LCBpOTE1X2dndHRfb2Zmc2V0KHZtYSkpOwogCWlmYmRldi0+dm1hID0gdm1hOwogCiAJbXV0ZXhf dW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNf bG9hZGVyLmMKaW5kZXggN2RkNzQ1ZGZlZmZiLi4zMjQ4MTJkNjliNzAgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKQEAgLTE5NCwxNCArMTk0LDE0IEBAIHN0YXRpYyB2 b2lkIHNldF9ndWNfaW5pdF9wYXJhbXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCX0KIAogCWlmIChndWMtPmFkc192bWEpIHsKLQkJdTMyIGFkcyA9ICh1MzIpZ3VjLT5hZHNf dm1hLT5ub2RlLnN0YXJ0ID4+IFBBR0VfU0hJRlQ7CisJCXUzMiBhZHMgPSBpOTE1X2dndHRfb2Zm c2V0KGd1Yy0+YWRzX3ZtYSkgPj4gUEFHRV9TSElGVDsKIAkJcGFyYW1zW0dVQ19DVExfREVCVUdd IHw9IGFkcyA8PCBHVUNfQURTX0FERFJfU0hJRlQ7CiAJCXBhcmFtc1tHVUNfQ1RMX0RFQlVHXSB8 PSBHVUNfQURTX0VOQUJMRUQ7CiAJfQogCiAJLyogSWYgR3VDIHN1Ym1pc3Npb24gaXMgZW5hYmxl ZCwgc2V0IHVwIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBoZXJlICovCiAJaWYgKGk5MTUuZW5hYmxl X2d1Y19zdWJtaXNzaW9uKSB7Ci0JCXUzMiBwZ3MgPSBkZXZfcHJpdi0+Z3VjLmN0eF9wb29sX3Zt YS0+bm9kZS5zdGFydDsKKwkJdTMyIHBncyA9IGk5MTVfZ2d0dF9vZmZzZXQoZGV2X3ByaXYtPmd1 Yy5jdHhfcG9vbF92bWEpOwogCQl1MzIgY3R4X2luXzE2ID0gR1VDX01BWF9HUFVfQ09OVEVYVFMg LyAxNjsKIAogCQlwZ3MgPj49IFBBR0VfU0hJRlQ7CkBAIC0yNzEsNyArMjcxLDcgQEAgc3RhdGlj IGludCBndWNfdWNvZGVfeGZlcl9kbWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAogCUk5MTVfV1JJVEUoRE1BX0NPUFlfU0laRSwgZ3VjX2Z3LT5oZWFkZXJfc2l6ZSArIGd1Y19m dy0+dWNvZGVfc2l6ZSk7CiAKIAkvKiBTZXQgdGhlIHNvdXJjZSBhZGRyZXNzIGZvciB0aGUgbmV3 IGJsb2IgKi8KLQlvZmZzZXQgPSB2bWEtPm5vZGUuc3RhcnQgKyBndWNfZnctPmhlYWRlcl9vZmZz ZXQ7CisJb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldCh2bWEpICsgZ3VjX2Z3LT5oZWFkZXJfb2Zm c2V0OwogCUk5MTVfV1JJVEUoRE1BX0FERFJfMF9MT1csIGxvd2VyXzMyX2JpdHMob2Zmc2V0KSk7 CiAJSTkxNV9XUklURShETUFfQUREUl8wX0hJR0gsIHVwcGVyXzMyX2JpdHMob2Zmc2V0KSAmIDB4 RkZGRik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggNGI5YmVhYTMwMDIzLi4zMzY4 MmY2NmIzN2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0zMTUsNyArMzE1LDcgQEAg aW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9yX3VwZGF0ZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4LAogCiAJZGVzYyA9IGN0eC0+ZGVzY190ZW1wbGF0ZTsJCQkJLyogYml0cyAgMy00ICAq LwogCWRlc2MgfD0gZW5naW5lLT5jdHhfZGVzY190ZW1wbGF0ZTsJCQkvKiBiaXRzICAwLTExICov Ci0JZGVzYyB8PSBjZS0+c3RhdGUtPm5vZGUuc3RhcnQgKyBMUkNfUFBIV1NQX1BOICogUEFHRV9T SVpFOworCWRlc2MgfD0gaTkxNV9nZ3R0X29mZnNldChjZS0+c3RhdGUpICsgTFJDX1BQSFdTUF9Q TiAqIFBBR0VfU0laRTsKIAkJCQkJCQkJLyogYml0cyAxMi0zMSAqLwogCWRlc2MgfD0gKHU2NClj dHgtPmh3X2lkIDw8IEdFTjhfQ1RYX0lEX1NISUZUOwkJLyogYml0cyAzMi01MiAqLwogCkBAIC03 OTIsNyArNzkyLDggQEAgc3RhdGljIGludCBpbnRlbF9scl9jb250ZXh0X3BpbihzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4LAogCiAJaW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9yX3VwZGF0 ZShjdHgsIGVuZ2luZSk7CiAKLQlscmNfcmVnX3N0YXRlW0NUWF9SSU5HX0JVRkZFUl9TVEFSVCsx XSA9IGNlLT5yaW5nLT52bWEtPm5vZGUuc3RhcnQ7CisJbHJjX3JlZ19zdGF0ZVtDVFhfUklOR19C VUZGRVJfU1RBUlQrMV0gPQorCQlpOTE1X2dndHRfb2Zmc2V0KGNlLT5yaW5nLT52bWEpOwogCWNl LT5scmNfcmVnX3N0YXRlID0gbHJjX3JlZ19zdGF0ZTsKIAljZS0+c3RhdGUtPm9iai0+ZGlydHkg PSB0cnVlOwogCkBAIC05MTQsNyArOTE1LDcgQEAgc3RhdGljIGlubGluZSBpbnQgZ2VuOF9lbWl0 X2ZsdXNoX2NvaGVyZW50bDNfd2Eoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCXdh X2N0eF9lbWl0KGJhdGNoLCBpbmRleCwgKE1JX1NUT1JFX1JFR0lTVEVSX01FTV9HRU44IHwKIAkJ CQkgICBNSV9TUk1fTFJNX0dMT0JBTF9HVFQpKTsKIAl3YV9jdHhfZW1pdF9yZWcoYmF0Y2gsIGlu ZGV4LCBHRU44X0wzU1FDUkVHNCk7Ci0Jd2FfY3R4X2VtaXQoYmF0Y2gsIGluZGV4LCBlbmdpbmUt PnNjcmF0Y2gtPm5vZGUuc3RhcnQgKyAyNTYpOworCXdhX2N0eF9lbWl0KGJhdGNoLCBpbmRleCwg aTkxNV9nZ3R0X29mZnNldChlbmdpbmUtPnNjcmF0Y2gpICsgMjU2KTsKIAl3YV9jdHhfZW1pdChi YXRjaCwgaW5kZXgsIDApOwogCiAJd2FfY3R4X2VtaXQoYmF0Y2gsIGluZGV4LCBNSV9MT0FEX1JF R0lTVEVSX0lNTSgxKSk7CkBAIC05MzIsNyArOTMzLDcgQEAgc3RhdGljIGlubGluZSBpbnQgZ2Vu OF9lbWl0X2ZsdXNoX2NvaGVyZW50bDNfd2Eoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l LAogCXdhX2N0eF9lbWl0KGJhdGNoLCBpbmRleCwgKE1JX0xPQURfUkVHSVNURVJfTUVNX0dFTjgg fAogCQkJCSAgIE1JX1NSTV9MUk1fR0xPQkFMX0dUVCkpOwogCXdhX2N0eF9lbWl0X3JlZyhiYXRj aCwgaW5kZXgsIEdFTjhfTDNTUUNSRUc0KTsKLQl3YV9jdHhfZW1pdChiYXRjaCwgaW5kZXgsIGVu Z2luZS0+c2NyYXRjaC0+bm9kZS5zdGFydCArIDI1Nik7CisJd2FfY3R4X2VtaXQoYmF0Y2gsIGlu ZGV4LCBpOTE1X2dndHRfb2Zmc2V0KGVuZ2luZS0+c2NyYXRjaCkgKyAyNTYpOwogCXdhX2N0eF9l bWl0KGJhdGNoLCBpbmRleCwgMCk7CiAKIAlyZXR1cm4gaW5kZXg7CkBAIC05OTMsNyArOTk0LDcg QEAgc3RhdGljIGludCBnZW44X2luaXRfaW5kaXJlY3RjdHhfYmIoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAogCiAJLyogV2FDbGVhclNsbVNwYWNlQXRDb250ZXh0U3dpdGNoOmJkdyxj aHYgKi8KIAkvKiBBY3R1YWwgc2NyYXRjaCBsb2NhdGlvbiBpcyBhdCAxMjggYnl0ZXMgb2Zmc2V0 ICovCi0Jc2NyYXRjaF9hZGRyID0gZW5naW5lLT5zY3JhdGNoLT5ub2RlLnN0YXJ0ICsgMiAqIENB Q0hFTElORV9CWVRFUzsKKwlzY3JhdGNoX2FkZHIgPSBpOTE1X2dndHRfb2Zmc2V0KGVuZ2luZS0+ c2NyYXRjaCkgKyAyICogQ0FDSEVMSU5FX0JZVEVTOwogCiAJd2FfY3R4X2VtaXQoYmF0Y2gsIGlu ZGV4LCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKIAl3YV9jdHhfZW1pdChiYXRjaCwgaW5kZXgs IChQSVBFX0NPTlRST0xfRkxVU0hfTDMgfApAQCAtMTA3Myw3ICsxMDc0LDcgQEAgc3RhdGljIGlu dCBnZW45X2luaXRfaW5kaXJlY3RjdHhfYmIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l LAogCS8qIEFjdHVhbCBzY3JhdGNoIGxvY2F0aW9uIGlzIGF0IDEyOCBieXRlcyBvZmZzZXQgKi8K IAlpZiAoSVNfS0JMX1JFVklEKGRldl9wcml2LCAwLCBLQkxfUkVWSURfQTApKSB7CiAJCXUzMiBz Y3JhdGNoX2FkZHIgPQotCQkJZW5naW5lLT5zY3JhdGNoLT5ub2RlLnN0YXJ0ICsgMiAqIENBQ0hF TElORV9CWVRFUzsKKwkJCWk5MTVfZ2d0dF9vZmZzZXQoZW5naW5lLT5zY3JhdGNoKSArIDIgKiBD QUNIRUxJTkVfQllURVM7CiAKIAkJd2FfY3R4X2VtaXQoYmF0Y2gsIGluZGV4LCBHRlhfT1BfUElQ RV9DT05UUk9MKDYpKTsKIAkJd2FfY3R4X2VtaXQoYmF0Y2gsIGluZGV4LCAoUElQRV9DT05UUk9M X0ZMVVNIX0wzIHwKQEAgLTE0ODIsNyArMTQ4Myw4IEBAIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X2Zs dXNoX3JlbmRlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsCiB7CiAJc3Ry dWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXF1ZXN0LT5yaW5nOwogCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSA9IHJlcXVlc3QtPmVuZ2luZTsKLQl1MzIgc2NyYXRjaF9hZGRyID0gZW5n aW5lLT5zY3JhdGNoLT5ub2RlLnN0YXJ0ICsgMiAqIENBQ0hFTElORV9CWVRFUzsKKwl1MzIgc2Ny YXRjaF9hZGRyID0KKwkJaTkxNV9nZ3R0X29mZnNldChlbmdpbmUtPnNjcmF0Y2gpICsgMiAqIENB Q0hFTElORV9CWVRFUzsKIAlib29sIHZmX2ZsdXNoX3dhID0gZmFsc2UsIGRjX2ZsdXNoX3dhID0g ZmFsc2U7CiAJdTMyIGZsYWdzID0gMDsKIAlpbnQgcmV0OwpAQCAtMTc1Miw3ICsxNzU0LDcgQEAg bHJjX3NldHVwX2h3cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1 X3ZtYSAqdm1hKQogCQlyZXR1cm4gUFRSX0VSUihod3MpOwogCiAJZW5naW5lLT5zdGF0dXNfcGFn ZS5wYWdlX2FkZHIgPSBod3MgKyBod3Nfb2Zmc2V0OwotCWVuZ2luZS0+c3RhdHVzX3BhZ2UuZ2d0 dF9vZmZzZXQgPSB2bWEtPm5vZGUuc3RhcnQgKyBod3Nfb2Zmc2V0OworCWVuZ2luZS0+c3RhdHVz X3BhZ2UuZ2d0dF9vZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHZtYSkgKyBod3Nfb2Zmc2V0Owog CWVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hID0gdm1hOwogCiAJcmV0dXJuIDA7CkBAIC0yMDIwLDcg KzIwMjIsNyBAQCBwb3B1bGF0ZV9scl9jb250ZXh0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsCiAJCQkgICAgICAgUklOR19JTkRJUkVDVF9DVFhfT0ZGU0VUKGVuZ2luZS0+bW1pb19iYXNl KSwgMCk7CiAJCWlmIChlbmdpbmUtPndhX2N0eC52bWEpIHsKIAkJCXN0cnVjdCBpOTE1X2N0eF93 b3JrYXJvdW5kcyAqd2FfY3R4ID0gJmVuZ2luZS0+d2FfY3R4OwotCQkJdTMyIGdndHRfb2Zmc2V0 ID0gd2FfY3R4LT52bWEtPm5vZGUuc3RhcnQ7CisJCQl1MzIgZ2d0dF9vZmZzZXQgPSBpOTE1X2dn dHRfb2Zmc2V0KHdhX2N0eC0+dm1hKTsKIAogCQkJcmVnX3N0YXRlW0NUWF9SQ1NfSU5ESVJFQ1Rf Q1RYKzFdID0KIAkJCQkoZ2d0dF9vZmZzZXQgKyB3YV9jdHgtPmluZGlyZWN0X2N0eC5vZmZzZXQg KiBzaXplb2YodWludDMyX3QpKSB8CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9vdmVybGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKaW5k ZXggNDAyZTA1ZjJmMWRlLi43MmY4OTkwYTEzZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX292ZXJsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9v dmVybGF5LmMKQEAgLTgwMSw3ICs4MDEsNyBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfZG9f cHV0X2ltYWdlKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LAogCXN3aWR0aCA9IHBhcmFt cy0+c3JjX3c7CiAJc3dpZHRoc3cgPSBjYWxjX3N3aWR0aHN3KGRldl9wcml2LCBwYXJhbXMtPm9m ZnNldF9ZLCB0bXBfd2lkdGgpOwogCXNoZWlnaHQgPSBwYXJhbXMtPnNyY19oOwotCWlvd3JpdGUz Mih2bWEtPm5vZGUuc3RhcnQgKyBwYXJhbXMtPm9mZnNldF9ZLCAmcmVncy0+T0JVRl8wWSk7CisJ aW93cml0ZTMyKGk5MTVfZ2d0dF9vZmZzZXQodm1hKSArIHBhcmFtcy0+b2Zmc2V0X1ksICZyZWdz LT5PQlVGXzBZKTsKIAlvc3RyaWRlID0gcGFyYW1zLT5zdHJpZGVfWTsKIAogCWlmIChwYXJhbXMt PmZvcm1hdCAmIEk5MTVfT1ZFUkxBWV9ZVVZfUExBTkFSKSB7CkBAIC04MTUsOCArODE1LDEwIEBA IHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9kb19wdXRfaW1hZ2Uoc3RydWN0IGludGVsX292ZXJs YXkgKm92ZXJsYXksCiAJCQkJICAgICAgcGFyYW1zLT5zcmNfdy91dl9oc2NhbGUpOwogCQlzd2lk dGhzdyB8PSBtYXhfdCh1MzIsIHRtcF9VLCB0bXBfVikgPDwgMTY7CiAJCXNoZWlnaHQgfD0gKHBh cmFtcy0+c3JjX2gvdXZfdnNjYWxlKSA8PCAxNjsKLQkJaW93cml0ZTMyKHZtYS0+bm9kZS5zdGFy dCArIHBhcmFtcy0+b2Zmc2V0X1UsICZyZWdzLT5PQlVGXzBVKTsKLQkJaW93cml0ZTMyKHZtYS0+ bm9kZS5zdGFydCArIHBhcmFtcy0+b2Zmc2V0X1YsICZyZWdzLT5PQlVGXzBWKTsKKwkJaW93cml0 ZTMyKGk5MTVfZ2d0dF9vZmZzZXQodm1hKSArIHBhcmFtcy0+b2Zmc2V0X1UsCisJCQkgICZyZWdz LT5PQlVGXzBVKTsKKwkJaW93cml0ZTMyKGk5MTVfZ2d0dF9vZmZzZXQodm1hKSArIHBhcmFtcy0+ b2Zmc2V0X1YsCisJCQkgICZyZWdzLT5PQlVGXzBWKTsKIAkJb3N0cmlkZSB8PSBwYXJhbXMtPnN0 cmlkZV9VViA8PCAxNjsKIAl9CiAKQEAgLTE0MTIsNyArMTQxNCw3IEBAIHZvaWQgaW50ZWxfc2V0 dXBfb3ZlcmxheShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQlyZXQgPSBQ VFJfRVJSKHZtYSk7CiAJCQlnb3RvIG91dF9mcmVlX2JvOwogCQl9Ci0JCW92ZXJsYXktPmZsaXBf YWRkciA9IHZtYS0+bm9kZS5zdGFydDsKKwkJb3ZlcmxheS0+ZmxpcF9hZGRyID0gaTkxNV9nZ3R0 X29mZnNldCh2bWEpOwogCiAJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFp bihyZWdfYm8sIHRydWUpOwogCQlpZiAocmV0KSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmMKaW5kZXggZDYxOGQwNTI0OWYzLi4yNmJkMmExZjhjODYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKQEAgLTE3Niw3ICsxNzYsNyBAQCBpbnRlbF9l bWl0X3Bvc3Rfc3luY19ub256ZXJvX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxKQogewogCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXUzMiBzY3Jh dGNoX2FkZHIgPQotCQlyZXEtPmVuZ2luZS0+c2NyYXRjaC0+bm9kZS5zdGFydCArIDIgKiBDQUNI RUxJTkVfQllURVM7CisJCWk5MTVfZ2d0dF9vZmZzZXQocmVxLT5lbmdpbmUtPnNjcmF0Y2gpICsg MiAqIENBQ0hFTElORV9CWVRFUzsKIAlpbnQgcmV0OwogCiAJcmV0ID0gaW50ZWxfcmluZ19iZWdp bihyZXEsIDYpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIGdlbjZfcmVuZGVyX3JpbmdfZmx1c2goc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBtb2RlKQogewogCXN0cnVjdCBpbnRl bF9yaW5nICpyaW5nID0gcmVxLT5yaW5nOwogCXUzMiBzY3JhdGNoX2FkZHIgPQotCQlyZXEtPmVu Z2luZS0+c2NyYXRjaC0+bm9kZS5zdGFydCArIDIgKiBDQUNIRUxJTkVfQllURVM7CisJCWk5MTVf Z2d0dF9vZmZzZXQocmVxLT5lbmdpbmUtPnNjcmF0Y2gpICsgMiAqIENBQ0hFTElORV9CWVRFUzsK IAl1MzIgZmxhZ3MgPSAwOwogCWludCByZXQ7CiAKQEAgLTI4Niw3ICsyODYsNyBAQCBnZW43X3Jl bmRlcl9yaW5nX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgbW9k ZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAl1MzIgc2NyYXRj aF9hZGRyID0KLQkJcmVxLT5lbmdpbmUtPnNjcmF0Y2gtPm5vZGUuc3RhcnQgKyAyICogQ0FDSEVM SU5FX0JZVEVTOworCQlpOTE1X2dndHRfb2Zmc2V0KHJlcS0+ZW5naW5lLT5zY3JhdGNoKSArIDIg KiBDQUNIRUxJTkVfQllURVM7CiAJdTMyIGZsYWdzID0gMDsKIAlpbnQgcmV0OwogCkBAIC0zNzEs NyArMzcxLDcgQEAgc3RhdGljIGludAogZ2VuOF9yZW5kZXJfcmluZ19mbHVzaChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIG1vZGUpCiB7CiAJdTMyIHNjcmF0Y2hfYWRkciA9 Ci0JCXJlcS0+ZW5naW5lLT5zY3JhdGNoLT5ub2RlLnN0YXJ0ICsgMiAqIENBQ0hFTElORV9CWVRF UzsKKwkJaTkxNV9nZ3R0X29mZnNldChyZXEtPmVuZ2luZS0+c2NyYXRjaCkgKyAyICogQ0FDSEVM SU5FX0JZVEVTOwogCXUzMiBmbGFncyA9IDA7CiAJaW50IHJldDsKIApAQCAtNTcxLDcgKzU3MSw3 IEBAIHN0YXRpYyBpbnQgaW5pdF9yaW5nX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCiAJICogcmVnaXN0ZXJzIHdpdGggdGhlIGFib3ZlIHNlcXVlbmNlICh0aGUgcmVhZGJh Y2sgb2YgdGhlIEhFQUQgcmVnaXN0ZXJzCiAJICogYWxzbyBlbmZvcmNlcyBvcmRlcmluZyksIG90 aGVyd2lzZSB0aGUgaHcgbWlnaHQgbG9zZSB0aGUgbmV3IHJpbmcKIAkgKiByZWdpc3RlciB2YWx1 ZXMuICovCi0JSTkxNV9XUklURV9TVEFSVChlbmdpbmUsIHJpbmctPnZtYS0+bm9kZS5zdGFydCk7 CisJSTkxNV9XUklURV9TVEFSVChlbmdpbmUsIGk5MTVfZ2d0dF9vZmZzZXQocmluZy0+dm1hKSk7 CiAKIAkvKiBXYUNsZWFyUmluZ0J1ZkhlYWRSZWdBdEluaXQ6Y3RnLGVsayAqLwogCWlmIChJOTE1 X1JFQURfSEVBRChlbmdpbmUpKQpAQCAtNTg2LDE2ICs1ODYsMTYgQEAgc3RhdGljIGludCBpbml0 X3JpbmdfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCS8qIElmIHRo ZSBoZWFkIGlzIHN0aWxsIG5vdCB6ZXJvLCB0aGUgcmluZyBpcyBkZWFkICovCiAJaWYgKHdhaXRf Zm9yKChJOTE1X1JFQURfQ1RMKGVuZ2luZSkgJiBSSU5HX1ZBTElEKSAhPSAwICYmCi0JCSAgICAg STkxNV9SRUFEX1NUQVJUKGVuZ2luZSkgPT0gcmluZy0+dm1hLT5ub2RlLnN0YXJ0ICYmCisJCSAg ICAgSTkxNV9SRUFEX1NUQVJUKGVuZ2luZSkgPT0gaTkxNV9nZ3R0X29mZnNldChyaW5nLT52bWEp ICYmCiAJCSAgICAgKEk5MTVfUkVBRF9IRUFEKGVuZ2luZSkgJiBIRUFEX0FERFIpID09IDAsIDUw KSkgewogCQlEUk1fRVJST1IoIiVzIGluaXRpYWxpemF0aW9uIGZhaWxlZCAiCi0JCQkgICJjdGwg JTA4eCAodmFsaWQ/ICVkKSBoZWFkICUwOHggdGFpbCAlMDh4IHN0YXJ0ICUwOHggW2V4cGVjdGVk ICUwOGxseF1cbiIsCisJCQkgICJjdGwgJTA4eCAodmFsaWQ/ICVkKSBoZWFkICUwOHggdGFpbCAl MDh4IHN0YXJ0ICUwOHggW2V4cGVjdGVkICUwOHhdXG4iLAogCQkJICBlbmdpbmUtPm5hbWUsCiAJ CQkgIEk5MTVfUkVBRF9DVEwoZW5naW5lKSwKIAkJCSAgSTkxNV9SRUFEX0NUTChlbmdpbmUpICYg UklOR19WQUxJRCwKIAkJCSAgSTkxNV9SRUFEX0hFQUQoZW5naW5lKSwgSTkxNV9SRUFEX1RBSUwo ZW5naW5lKSwKIAkJCSAgSTkxNV9SRUFEX1NUQVJUKGVuZ2luZSksCi0JCQkgIHJpbmctPnZtYS0+ bm9kZS5zdGFydCk7CisJCQkgIGk5MTVfZ2d0dF9vZmZzZXQocmluZy0+dm1hKSk7CiAJCXJldCA9 IC1FSU87CiAJCWdvdG8gb3V0OwogCX0KQEAgLTE3MTYsNyArMTcxNiw3IEBAIGk4MzBfZW1pdF9i Yl9zdGFydChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJICAgdW5zaWduZWQg aW50IGRpc3BhdGNoX2ZsYWdzKQogewogCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nID0gcmVxLT5y aW5nOwotCXUzMiBjc19vZmZzZXQgPSByZXEtPmVuZ2luZS0+c2NyYXRjaC0+bm9kZS5zdGFydDsK Kwl1MzIgY3Nfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldChyZXEtPmVuZ2luZS0+c2NyYXRjaCk7 CiAJaW50IHJldDsKIAogCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKQEAgLTE4NTcs MTEgKzE4NTcsMTEgQEAgc3RhdGljIGludCBpbml0X3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKIAkJZ290byBlcnI7CiAKIAllbmdpbmUtPnN0YXR1c19wYWdlLnZt YSA9IHZtYTsKLQllbmdpbmUtPnN0YXR1c19wYWdlLmdndHRfb2Zmc2V0ID0gdm1hLT5ub2RlLnN0 YXJ0OworCWVuZ2luZS0+c3RhdHVzX3BhZ2UuZ2d0dF9vZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0 KHZtYSk7CiAJZW5naW5lLT5zdGF0dXNfcGFnZS5wYWdlX2FkZHIgPSBpOTE1X2dlbV9vYmplY3Rf cGluX21hcChvYmopOwogCi0JRFJNX0RFQlVHX0RSSVZFUigiJXMgaHdzIG9mZnNldDogMHglMDhs bHhcbiIsCi0JCQkgZW5naW5lLT5uYW1lLCB2bWEtPm5vZGUuc3RhcnQpOworCURSTV9ERUJVR19E UklWRVIoIiVzIGh3cyBvZmZzZXQ6IDB4JTA4eFxuIiwKKwkJCSBlbmdpbmUtPm5hbWUsIGk5MTVf Z2d0dF9vZmZzZXQodm1hKSk7CiAJcmV0dXJuIDA7CiAKIGVycjoKQEAgLTI1NDEsMTMgKzI1NDEs MTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfcmluZ19pbml0X3NlbWFwaG9yZXMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCX0KIAogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDgpIHsKLQkJdTY0IG9mZnNldCA9IGRldl9wcml2LT5zZW1hcGhvcmUtPm5vZGUuc3RhcnQ7CisJ CXUzMiBvZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KGRldl9wcml2LT5zZW1hcGhvcmUpOwogCiAJ CWVuZ2luZS0+c2VtYXBob3JlLnN5bmNfdG8gPSBnZW44X3Jpbmdfc3luY190bzsKIAkJZW5naW5l LT5zZW1hcGhvcmUuc2lnbmFsID0gZ2VuOF94Y3Nfc2lnbmFsOwogCiAJCWZvciAoaSA9IDA7IGkg PCBJOTE1X05VTV9FTkdJTkVTOyBpKyspIHsKLQkJCXU2NCByaW5nX29mZnNldDsKKwkJCXUzMiBy aW5nX29mZnNldDsKIAogCQkJaWYgKGkgIT0gZW5naW5lLT5pZCkKIAkJCQlyaW5nX29mZnNldCA9 IG9mZnNldCArIEdFTjhfU0VNQVBIT1JFX09GRlNFVChlbmdpbmUtPmlkLCBpKTsKLS0gCjIuOC4x CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK