From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: [PATCH 4/5] drm/i915: Finish gen6/7 dynamic page table allocation Date: Tue, 24 Mar 2015 15:46:22 +0000 Message-ID: <1427211983-26284-5-git-send-email-michel.thierry@intel.com> References: <1427211983-26284-1-git-send-email-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id B19FE6E279 for ; Tue, 24 Mar 2015 08:46:31 -0700 (PDT) In-Reply-To: <1427211983-26284-1-git-send-email-michel.thierry@intel.com> 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 Cc: Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBjb250aW51ZXMgb24gdGhlIGlkZWEgZnJvbSAiVHJhY2sgR0VONiBwYWdlIHRh YmxlIHVzYWdlIi4KRnJvbSBoZXJlIG9uLCBpbiB0aGUgc3RlYWR5IHN0YXRlLCBQREVzIGFyZSBh bGwgcG9pbnRpbmcgdG8gdGhlIHNjcmF0Y2gKcGFnZSB0YWJsZSAoYXMgcmVjb21tZW5kZWQgaW4g dGhlIHNwZWMpLiBXaGVuIGFuIG9iamVjdCBpcyBhbGxvY2F0ZWQgaW4KdGhlIFZBIHJhbmdlLCB0 aGUgY29kZSB3aWxsIGRldGVybWluZSBpZiB3ZSBuZWVkIHRvIGFsbG9jYXRlIGEgcGFnZSBmb3IK dGhlIHBhZ2UgdGFibGUuIFNpbWlsYXJseSB3aGVuIHRoZSBvYmplY3QgaXMgZGVzdHJveWVkLCB3 ZSB3aWxsIHJlbW92ZSwKYW5kIGZyZWUgdGhlIHBhZ2UgdGFibGUgcG9pbnRpbmcgdGhlIFBERSBi YWNrIHRvIHRoZSBzY3JhdGNoIHBhZ2UuCgpGb2xsb3dpbmcgcGF0Y2hlcyB3aWxsIHdvcmsgdG8g dW5pZnkgdGhlIGNvZGUgYSBiaXQgYXMgd2UgYnJpbmcgaW4gR0VOOApzdXBwb3J0LiBHRU42IGFu ZCBHRU44IGFyZSBkaWZmZXJlbnQgZW5vdWdoIHRoYXQgSSBoYWQgYSBoYXJkIHRpbWUgdG8KZ2V0 IHRvIHRoaXMgcG9pbnQgd2l0aCBhcyBtdWNoIGNvbW1vbiBjb2RlIGFzIEkgZG8uCgpUaGUgYWxp YXNpbmcgUFBHVFQgbXVzdCBwcmUtYWxsb2NhdGUgYWxsIG9mIHRoZSBwYWdlIHRhYmxlcy4gVGhl cmUgYXJlIGEKZmV3IHJlYXNvbnMgZm9yIHRoaXMuIFR3byB0cml2aWFsIG9uZXM6IGFsaWFzaW5n IHBwZ3R0IGdvZXMgdGhyb3VnaCB0aGUKZ2d0dCBwYXRocywgc28gaXQncyBoYXJkIHRvIG1haW50 YWluLCB3ZSBjdXJyZW50bHkgZG8gbm90IHJlc3RvcmUgdGhlCmRlZmF1bHQgY29udGV4dCAoYXNz dW1pbmcgdGhlIHByZXZpb3VzIGZvcmNlIHJlbG9hZCBpcyBpbmRlZWQKbmVjZXNzYXJ5KS4gTW9z dCBpbXBvcnRhbnRseSB0aG91Z2gsIHRoZSBvbmx5IHdheSAoaXQgc2VlbXMgZnJvbQplbXBpcmlj YWwgZXZpZGVuY2UpIHRvIGludmFsaWRhdGUgdGhlIENTIFRMQnMgb24gbm9uLXJlbmRlciByaW5n IGlzIHRvCmVpdGhlciB1c2UgcmluZyBzeW5jICh3aGljaCByZXF1aXJlcyBhY3R1YWxseSBzdG9w cGluZyB0aGUgcmluZ3MgaW4Kb3JkZXIgdG8gc3luY2hyb25pemUgd2hlbiB0aGUgc3luYyBjb21w bGV0ZXMgdnMuIHdoZXJlIHlvdSBhcmUgaW4KZXhlY3V0aW9uKSwgb3IgdG8gcmVsb2FkIERDTFYu ICBTaW5jZSB3aXRob3V0IGZ1bGwgUFBHVFQgd2UgZG8gbm90IGV2ZXIKcmVsb2FkIHRoZSBEQ0xW IHJlZ2lzdGVyLCB0aGVyZSBpcyBubyBnb29kIHdheSB0byBhY2hpZXZlIHRoaXMuIFRoZQpzaW1w bGVzdCBzb2x1dGlvbiBpcyBqdXN0IHRvIG5vdCBzdXBwb3J0IGR5bmFtaWMgcGFnZSB0YWJsZQpj cmVhdGlvbi9kZXN0cnVjdGlvbiBpbiB0aGUgYWxpYXNpbmcgUFBHVFQuCgpXZSBjb3VsZCBhbHdh eXMgcmVsb2FkIERDTFYsIGJ1dCB0aGlzIHNlZW1zIGxpa2UgcXVpdGUgYSBiaXQgb2YgZXhjZXNz Cm92ZXJoZWFkIG9ubHkgdG8gc2F2ZSBhdCBtb3N0IDJNQi00ayBvZiBtZW1vcnkgZm9yIHRoZSBh bGlhc2luZyBQUEdUVApwYWdlIHRhYmxlcy4KCnYyOiBNYWtlIHRoZSBwYWdlIHRhYmxlIGJpdG1h cCBkZWNsYXJlZCBpbnNpZGUgdGhlIGZ1bmN0aW9uIChDaHJpcykKU2ltcGxpZnkgdGhlIHdheSBz Y3JhdGNoaW5nIGFkZHJlc3Mgc3BhY2Ugd29ya3MuCk1vdmUgdGhlIGFsbG9jL3RlYXJkb3duIHRy YWNlcG9pbnRzIHVwIGEgbGV2ZWwgaW4gdGhlIGNhbGwgc3RhY2sgc28gdGhhdApib3RoIGFsbCBp bXBsZW1lbnRhdGlvbnMgZ2V0IHRoZSB0cmFjZS4KCnYzOiBVcGRhdGVkIHRyYWNlIGV2ZW50IHRv IHNwaXQgb3V0IGEgbmFtZQoKdjQ6IEFsaWFzaW5nIHBwZ3R0IGlzIG5vdyBpbml0aWFsaXplZCBk aWZmZXJlbnRseSAoaW4gc2V0dXAgZ2xvYmFsIGd0dCkKCnY1OiBSZWJhc2UgdG8gbGF0ZXN0IGNv ZGUuIEFsc28gcmVtb3ZlZCB1bm5lY2Vzc2FyeSBhbGlhc2luZyBwcGd0dCBjaGVjawpmb3IgdHJh Y2UsIGFzIGl0IGlzIG5vIGxvbmdlciBwb3NzaWJsZSBhZnRlciB0aGUgUFBHVFQgY2xlYW51cCBw YXRjaCBzZXJpZXMKb2YgYSBjb3VwbGUgb2YgbW9udGhzIGFnbyAoRGFuaWVsKS4KCnY2OiBJbXBs ZW1lbnQgY2hhbmdlcyBmcm9tIGNvZGUgcmV2aWV3IChEYW5pZWwpOgogLSBhbGxvY2F0ZS90ZWFy ZG93bl92YV9yYW5nZSBjYWxscyBhZGRlZC4KIC0gQWRkIGEgc2NyYXRjaCBwYWdlIGFsbG9jYXRp b24gaGVscGVyIChvbmx5IG5lZWQgdGhlIGFkZHJlc3MpLgogLSBNb3ZlIHRyYWNlIGV2ZW50cyB0 byBhIG5ldyBwYXRjaC4KIC0gVXNlIHVwZGF0ZWQgbWFya190bGJzX2RpcnR5LgogLSBNb3ZlZCBw dCBwcmVhbGxvY2F0aW9uIGZvciBhbGlhc2luZyBwcGd0dCBpbnRvIGdlbjZfcHBndHRfaW5pdC4K CnY3OiB0ZWFyZG93bl92YV9yYW5nZSByZW1vdmVkIChEYW5pZWwpLgogICAgSW4gaW5pdCwgZ2Vu Nl9wcGd0dF9jbGVhcl9yYW5nZSBjYWxsIGlzIG9ubHkgbmVlZGVkIGZvciBhbGlhc2luZyBwcGd0 dC4KCnY4OiBSZWJhc2UgYWZ0ZXIgcy9wYWdlX3RhYmxlcy9wYWdlX3RhYmxlLy4KCnY5OiBSZW1v dmUgdW5uZWNlc3Nhcnkgc2NyYXRjaCBmbGFnIGluIHBhZ2VfdGFibGUgc3RydWN0LCBmdXR1cmUg cGF0Y2hlcwpjYW4ganVzdCBjb21wYXJlIGFnYWluc3QgcHBndHQtPnNjcmF0Y2hfcHQsIGFuZCBh bGxvY19wdF9zY3JhdGNoIGJlY29tZXMKcmVkdW5kYW50LiBJbml0aWFsaXplIHNjcmF0Y2hfcHQg YW5kIHB0LiAoTWlrYSkKCnYxMDogQ2xlYW4gdXAgYWxpYXNpbmcgcHBndHQgaW5pdCBlcnJvciBw YXRoIGFuZCBwcmV2ZW50IGxlYWtpbmcgdGhlCnBwZ3R0IG9iaiB3aGVuIGluaXQgZmFpbHMuIChN aWthKQpVcGRhdGVkIGNvbW1pdCBhdXRob3IuIChEYW5pZWwpCgpDYzogTWlrYSBLdW9wcGFsYSA8 bWlrYS5rdW9wcGFsYUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEJlbiBXaWRhd3NreSA8YmVu QGJ3aWRhd3NrLm5ldD4KU2lnbmVkLW9mZi1ieTogTWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGll cnJ5QGludGVsLmNvbT4gKHY0KykKLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYyB8IDE0NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIHwgICAyICsKIDIgZmlsZXMgY2hhbmdlZCwgMTI5 IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmMKaW5kZXggNmVmZmE2MS4uMDk1MjczNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmMKQEAgLTM0Myw3ICszNDMsNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcGFnZV90YWJsZV9l bnRyeSAqYWxsb2NfcHRfc2luZ2xlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaWYgKCFwdC0+ dXNlZF9wdGVzKQogCQlnb3RvIGZhaWxfYml0bWFwOwogCi0JcHQtPnBhZ2UgPSBhbGxvY19wYWdl KEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPKTsKKwlwdC0+cGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0tF Uk5FTCk7CiAJaWYgKCFwdC0+cGFnZSkKIAkJZ290byBmYWlsX3BhZ2U7CiAKQEAgLTM3OCw3ICsz NzgsNyBAQCBmYWlsX2JpdG1hcDoKICAqIFJldHVybjogMCBpZiBhbGxvY2F0aW9uIHN1Y2NlZWRl ZC4KICAqLwogc3RhdGljIGludCBhbGxvY19wdF9yYW5nZShzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVj dG9yeV9lbnRyeSAqcGQsIHVpbnQxNl90IHBkZSwgc2l6ZV90IGNvdW50LAotCQkgIHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCisJCQkgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJaW50IGks IHJldDsKIApAQCAtMTE2MiwxMyArMTE2Miw3MCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbWFya190 bGJzX2RpcnR5KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKIAlwcGd0dC0+cGRfZGlydHlf cmluZ3MgPSBJTlRFTF9JTkZPKHBwZ3R0LT5iYXNlLmRldiktPnJpbmdfbWFzazsKIH0KIAorc3Rh dGljIHZvaWQgZ2VuNl9pbml0aWFsaXplX3B0KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZt LAorCQlzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlX2VudHJ5ICpwdCkKK3sKKwlnZW42X3B0ZV90ICpw dF92YWRkciwgc2NyYXRjaF9wdGU7CisJaW50IGk7CisKKwlXQVJOX09OKHZtLT5zY3JhdGNoLmFk ZHIgPT0gMCk7CisKKwlzY3JhdGNoX3B0ZSA9IHZtLT5wdGVfZW5jb2RlKHZtLT5zY3JhdGNoLmFk ZHIsCisJCQlJOTE1X0NBQ0hFX0xMQywgdHJ1ZSwgMCk7CisKKwlwdF92YWRkciA9IGttYXBfYXRv bWljKHB0LT5wYWdlKTsKKworCWZvciAoaSA9IDA7IGkgPCBHRU42X1BURVM7IGkrKykKKwkJcHRf dmFkZHJbaV0gPSBzY3JhdGNoX3B0ZTsKKworCWt1bm1hcF9hdG9taWMocHRfdmFkZHIpOworfQor CiBzdGF0aWMgaW50IGdlbjZfYWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0sCiAJCQkgICAgICAgdWludDY0X3Qgc3RhcnQsIHVpbnQ2NF90IGxlbmd0aCkKIHsKKwlE RUNMQVJFX0JJVE1BUChuZXdfcGFnZV90YWJsZXMsIEk5MTVfUERFUyk7CisJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IHZtLT5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPQogCQkJ CWNvbnRhaW5lcl9vZih2bSwgc3RydWN0IGk5MTVfaHdfcHBndHQsIGJhc2UpOwogCXN0cnVjdCBp OTE1X3BhZ2VfdGFibGVfZW50cnkgKnB0OworCWNvbnN0IHVpbnQzMl90IHN0YXJ0X3NhdmUgPSBz dGFydCwgbGVuZ3RoX3NhdmUgPSBsZW5ndGg7CiAJdWludDMyX3QgcGRlLCB0ZW1wOworCWludCBy ZXQ7CisKKwlXQVJOX09OKHVwcGVyXzMyX2JpdHMoc3RhcnQpKTsKKworCWJpdG1hcF96ZXJvKG5l d19wYWdlX3RhYmxlcywgSTkxNV9QREVTKTsKKworCS8qIFRoZSBhbGxvY2F0aW9uIGlzIGRvbmUg aW4gdHdvIHN0YWdlcyBzbyB0aGF0IHdlIGNhbiBiYWlsIG91dCB3aXRoCisJICogbWluaW1hbCBh bW91bnQgb2YgcGFpbi4gVGhlIGZpcnN0IHN0YWdlIGZpbmRzIG5ldyBwYWdlIHRhYmxlcyB0aGF0 CisJICogbmVlZCBhbGxvY2F0aW9uLiBUaGUgc2Vjb25kIHN0YWdlIG1hcmtzIHVzZSBwdGVzIHdp dGhpbiB0aGUgcGFnZQorCSAqIHRhYmxlcy4KKwkgKi8KKwlnZW42X2Zvcl9lYWNoX3BkZShwdCwg JnBwZ3R0LT5wZCwgc3RhcnQsIGxlbmd0aCwgdGVtcCwgcGRlKSB7CisJCWlmIChwdCAhPSBwcGd0 dC0+c2NyYXRjaF9wdCkgeworCQkJV0FSTl9PTihiaXRtYXBfZW1wdHkocHQtPnVzZWRfcHRlcywg R0VONl9QVEVTKSk7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qIFdlJ3ZlIGFscmVhZHkgYWxs b2NhdGVkIGEgcGFnZSB0YWJsZSAqLworCQlXQVJOX09OKCFiaXRtYXBfZW1wdHkocHQtPnVzZWRf cHRlcywgR0VONl9QVEVTKSk7CisKKwkJcHQgPSBhbGxvY19wdF9zaW5nbGUoZGV2KTsKKwkJaWYg KElTX0VSUihwdCkpIHsKKwkJCXJldCA9IFBUUl9FUlIocHQpOworCQkJZ290byB1bndpbmRfb3V0 OworCQl9CisKKwkJZ2VuNl9pbml0aWFsaXplX3B0KHZtLCBwdCk7CisKKwkJcHBndHQtPnBkLnBh Z2VfdGFibGVbcGRlXSA9IHB0OworCQlzZXRfYml0KHBkZSwgbmV3X3BhZ2VfdGFibGVzKTsKKwl9 CisKKwlzdGFydCA9IHN0YXJ0X3NhdmU7CisJbGVuZ3RoID0gbGVuZ3RoX3NhdmU7CiAKIAlnZW42 X2Zvcl9lYWNoX3BkZShwdCwgJnBwZ3R0LT5wZCwgc3RhcnQsIGxlbmd0aCwgdGVtcCwgcGRlKSB7 CiAJCURFQ0xBUkVfQklUTUFQKHRtcF9iaXRtYXAsIEdFTjZfUFRFUyk7CkBAIC0xMTc3LDIxICsx MjM0LDQ2IEBAIHN0YXRpYyBpbnQgZ2VuNl9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSwKIAkJYml0bWFwX3NldCh0bXBfYml0bWFwLCBnZW42X3B0ZV9pbmRleChz dGFydCksCiAJCQkgICBnZW42X3B0ZV9jb3VudChzdGFydCwgbGVuZ3RoKSk7CiAKLQkJYml0bWFw X29yKHB0LT51c2VkX3B0ZXMsIHB0LT51c2VkX3B0ZXMsIHRtcF9iaXRtYXAsCisJCWlmICh0ZXN0 X2FuZF9jbGVhcl9iaXQocGRlLCBuZXdfcGFnZV90YWJsZXMpKQorCQkJZ2VuNl93cml0ZV9wZGUo JnBwZ3R0LT5wZCwgcGRlLCBwdCk7CisKKwkJYml0bWFwX29yKHB0LT51c2VkX3B0ZXMsIHRtcF9i aXRtYXAsIHB0LT51c2VkX3B0ZXMsCiAJCQkJR0VONl9QVEVTKTsKIAl9CiAKKwlXQVJOX09OKCFi aXRtYXBfZW1wdHkobmV3X3BhZ2VfdGFibGVzLCBJOTE1X1BERVMpKTsKKworCS8qIE1ha2Ugc3Vy ZSB3cml0ZSBpcyBjb21wbGV0ZSBiZWZvcmUgb3RoZXIgY29kZSBjYW4gdXNlIHRoaXMgcGFnZQor CSAqIHRhYmxlLiBBbHNvIHJlcXVpcmUgZm9yIFdDIG1hcHBlZCBQVEVzICovCisJcmVhZGwoZGV2 X3ByaXYtPmd0dC5nc20pOworCiAJbWFya190bGJzX2RpcnR5KHBwZ3R0KTsKIAlyZXR1cm4gMDsK KwordW53aW5kX291dDoKKwlmb3JfZWFjaF9zZXRfYml0KHBkZSwgbmV3X3BhZ2VfdGFibGVzLCBJ OTE1X1BERVMpIHsKKwkJc3RydWN0IGk5MTVfcGFnZV90YWJsZV9lbnRyeSAqcHQgPSBwcGd0dC0+ cGQucGFnZV90YWJsZVtwZGVdOworCisJCXBwZ3R0LT5wZC5wYWdlX3RhYmxlW3BkZV0gPSBwcGd0 dC0+c2NyYXRjaF9wdDsKKwkJdW5tYXBfYW5kX2ZyZWVfcHQocHQsIHZtLT5kZXYpOworCX0KKwor CW1hcmtfdGxic19kaXJ0eShwcGd0dCk7CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQg Z2VuNl9wcGd0dF9mcmVlKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKIHsKIAlpbnQgaTsK IAotCWZvciAoaSA9IDA7IGkgPCBwcGd0dC0+bnVtX3BkX2VudHJpZXM7IGkrKykKLQkJdW5tYXBf YW5kX2ZyZWVfcHQocHBndHQtPnBkLnBhZ2VfdGFibGVbaV0sIHBwZ3R0LT5iYXNlLmRldik7CisJ Zm9yIChpID0gMDsgaSA8IHBwZ3R0LT5udW1fcGRfZW50cmllczsgaSsrKSB7CisJCXN0cnVjdCBp OTE1X3BhZ2VfdGFibGVfZW50cnkgKnB0ID0gcHBndHQtPnBkLnBhZ2VfdGFibGVbaV07CisKKwkJ aWYgKHB0ICE9IHBwZ3R0LT5zY3JhdGNoX3B0KQorCQkJdW5tYXBfYW5kX2ZyZWVfcHQocHBndHQt PnBkLnBhZ2VfdGFibGVbaV0sIHBwZ3R0LT5iYXNlLmRldik7CisJfQogCisJdW5tYXBfYW5kX2Zy ZWVfcHQocHBndHQtPnNjcmF0Y2hfcHQsIHBwZ3R0LT5iYXNlLmRldik7CiAJdW5tYXBfYW5kX2Zy ZWVfcGQoJnBwZ3R0LT5wZCk7CiB9CiAKQEAgLTEyMTcsNiArMTI5OSwxMiBAQCBzdGF0aWMgaW50 IGdlbjZfcHBndHRfYWxsb2NhdGVfcGFnZV9kaXJlY3RvcmllcyhzdHJ1Y3QgaTkxNV9od19wcGd0 dCAqcHBndHQpCiAJICogc2l6ZS4gV2UgYWxsb2NhdGUgYXQgdGhlIHRvcCBvZiB0aGUgR1RUIHRv IGF2b2lkIGZyYWdtZW50YXRpb24uCiAJICovCiAJQlVHX09OKCFkcm1fbW1faW5pdGlhbGl6ZWQo JmRldl9wcml2LT5ndHQuYmFzZS5tbSkpOworCXBwZ3R0LT5zY3JhdGNoX3B0ID0gYWxsb2NfcHRf c2luZ2xlKHBwZ3R0LT5iYXNlLmRldik7CisJaWYgKElTX0VSUihwcGd0dC0+c2NyYXRjaF9wdCkp CisJCXJldHVybiBQVFJfRVJSKHBwZ3R0LT5zY3JhdGNoX3B0KTsKKworCWdlbjZfaW5pdGlhbGl6 ZV9wdCgmcHBndHQtPmJhc2UsIHBwZ3R0LT5zY3JhdGNoX3B0KTsKKwogYWxsb2M6CiAJcmV0ID0g ZHJtX21tX2luc2VydF9ub2RlX2luX3JhbmdlX2dlbmVyaWMoJmRldl9wcml2LT5ndHQuYmFzZS5t bSwKIAkJCQkJCSAgJnBwZ3R0LT5ub2RlLCBHRU42X1BEX1NJWkUsCkBAIC0xMjQ3LDYgKzEzMzUs NyBAQCBhbGxvYzoKIAlyZXR1cm4gMDsKIAogZXJyX291dDoKKwl1bm1hcF9hbmRfZnJlZV9wdChw cGd0dC0+c2NyYXRjaF9wdCwgcHBndHQtPmJhc2UuZGV2KTsKIAlyZXR1cm4gcmV0OwogfQogCkBA IC0xMjU4LDE4ICsxMzQ3LDIwIEBAIHN0YXRpYyBpbnQgZ2VuNl9wcGd0dF9hbGxvYyhzdHJ1Y3Qg aTkxNV9od19wcGd0dCAqcHBndHQpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXJldCA9 IGFsbG9jX3B0X3JhbmdlKCZwcGd0dC0+cGQsIDAsIHBwZ3R0LT5udW1fcGRfZW50cmllcywKLQkJ CXBwZ3R0LT5iYXNlLmRldik7CisJcmV0dXJuIDA7Cit9CiAKLQlpZiAocmV0KSB7Ci0JCWRybV9t bV9yZW1vdmVfbm9kZSgmcHBndHQtPm5vZGUpOwotCQlyZXR1cm4gcmV0OwotCX0KK3N0YXRpYyB2 b2lkIGdlbjZfc2NyYXRjaF92YV9yYW5nZShzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCisJ CQkJICB1aW50NjRfdCBzdGFydCwgdWludDY0X3QgbGVuZ3RoKQoreworCXN0cnVjdCBpOTE1X3Bh Z2VfdGFibGVfZW50cnkgKnVudXNlZDsKKwl1aW50MzJfdCBwZGUsIHRlbXA7CiAKLQlyZXR1cm4g MDsKKwlnZW42X2Zvcl9lYWNoX3BkZSh1bnVzZWQsICZwcGd0dC0+cGQsIHN0YXJ0LCBsZW5ndGgs IHRlbXAsIHBkZSkKKwkJcHBndHQtPnBkLnBhZ2VfdGFibGVbcGRlXSA9IHBwZ3R0LT5zY3JhdGNo X3B0OwogfQogCi1zdGF0aWMgaW50IGdlbjZfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0 dCAqcHBndHQpCitzdGF0aWMgaW50IGdlbjZfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0 dCAqcHBndHQsIGJvb2wgYWxpYXNpbmcpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBw Z3R0LT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwpAQCAtMTI5Miw2ICsxMzgzLDE3IEBAIHN0YXRpYyBpbnQgZ2VuNl9wcGd0 dF9pbml0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKIAlpZiAocmV0KQogCQlyZXR1cm4g cmV0OwogCisJaWYgKGFsaWFzaW5nKSB7CisJCS8qIHByZWFsbG9jYXRlIGFsbCBwdHMgKi8KKwkJ cmV0ID0gYWxsb2NfcHRfcmFuZ2UoJnBwZ3R0LT5wZCwgMCwgcHBndHQtPm51bV9wZF9lbnRyaWVz LAorCQkJCXBwZ3R0LT5iYXNlLmRldik7CisKKwkJaWYgKHJldCkgeworCQkJZ2VuNl9wcGd0dF9j bGVhbnVwKCZwcGd0dC0+YmFzZSk7CisJCQlyZXR1cm4gcmV0OworCQl9CisJfQorCiAJcHBndHQt PmJhc2UuYWxsb2NhdGVfdmFfcmFuZ2UgPSBnZW42X2FsbG9jX3ZhX3JhbmdlOwogCXBwZ3R0LT5i YXNlLmNsZWFyX3JhbmdlID0gZ2VuNl9wcGd0dF9jbGVhcl9yYW5nZTsKIAlwcGd0dC0+YmFzZS5p bnNlcnRfZW50cmllcyA9IGdlbjZfcHBndHRfaW5zZXJ0X2VudHJpZXM7CkBAIC0xMzA2LDcgKzE0 MDgsMTAgQEAgc3RhdGljIGludCBnZW42X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQg KnBwZ3R0KQogCXBwZ3R0LT5wZF9hZGRyID0gKGdlbjZfcHRlX3QgX19pb21lbSAqKWRldl9wcml2 LT5ndHQuZ3NtICsKIAkJcHBndHQtPnBkLnBkX29mZnNldCAvIHNpemVvZihnZW42X3B0ZV90KTsK IAotCXBwZ3R0LT5iYXNlLmNsZWFyX3JhbmdlKCZwcGd0dC0+YmFzZSwgMCwgcHBndHQtPmJhc2Uu dG90YWwsIHRydWUpOworCWlmIChhbGlhc2luZykKKwkJcHBndHQtPmJhc2UuY2xlYXJfcmFuZ2Uo JnBwZ3R0LT5iYXNlLCAwLCBwcGd0dC0+YmFzZS50b3RhbCwgdHJ1ZSk7CisJZWxzZQorCQlnZW42 X3NjcmF0Y2hfdmFfcmFuZ2UocHBndHQsIDAsIHBwZ3R0LT5iYXNlLnRvdGFsKTsKIAogCWdlbjZf d3JpdGVfcGFnZV9yYW5nZShkZXZfcHJpdiwgJnBwZ3R0LT5wZCwgMCwgcHBndHQtPmJhc2UudG90 YWwpOwogCkBAIC0xMzIwLDcgKzE0MjUsOCBAQCBzdGF0aWMgaW50IGdlbjZfcHBndHRfaW5pdChz dHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQg X19od19wcGd0dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpOTE1X2h3X3Bw Z3R0ICpwcGd0dCkKK3N0YXRpYyBpbnQgX19od19wcGd0dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKKwkJYm9vbCBhbGlhc2luZykKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwog CkBAIC0xMzI4LDcgKzE0MzQsNyBAQCBzdGF0aWMgaW50IF9faHdfcHBndHRfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCiAJcHBndHQtPmJh c2Uuc2NyYXRjaCA9IGRldl9wcml2LT5ndHQuYmFzZS5zY3JhdGNoOwogCiAJaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuIDwgOCkKLQkJcmV0dXJuIGdlbjZfcHBndHRfaW5pdChwcGd0dCk7CisJCXJl dHVybiBnZW42X3BwZ3R0X2luaXQocHBndHQsIGFsaWFzaW5nKTsKIAllbHNlCiAJCXJldHVybiBn ZW44X3BwZ3R0X2luaXQocHBndHQsIGRldl9wcml2LT5ndHQuYmFzZS50b3RhbCk7CiB9CkBAIC0x MzM3LDcgKzE0NDMsNyBAQCBpbnQgaTkxNV9wcGd0dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCWludCByZXQgPSAwOwogCi0JcmV0ID0g X19od19wcGd0dF9pbml0KGRldiwgcHBndHQpOworCXJldCA9IF9faHdfcHBndHRfaW5pdChkZXYs IHBwZ3R0LCBmYWxzZSk7CiAJaWYgKHJldCA9PSAwKSB7CiAJCWtyZWZfaW5pdCgmcHBndHQtPnJl Zik7CiAJCWRybV9tbV9pbml0KCZwcGd0dC0+YmFzZS5tbSwgcHBndHQtPmJhc2Uuc3RhcnQsCkBA IC0xOTcyLDkgKzIwNzgsMTEgQEAgc3RhdGljIGludCBpOTE1X2dlbV9zZXR1cF9nbG9iYWxfZ3R0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWlmICghcHBndHQpCiAJCQlyZXR1cm4gLUVOT01F TTsKIAotCQlyZXQgPSBfX2h3X3BwZ3R0X2luaXQoZGV2LCBwcGd0dCk7Ci0JCWlmIChyZXQgIT0g MCkKKwkJcmV0ID0gX19od19wcGd0dF9pbml0KGRldiwgcHBndHQsIHRydWUpOworCQlpZiAocmV0 KSB7CisJCQlrZnJlZShwcGd0dCk7CiAJCQlyZXR1cm4gcmV0OworCQl9CiAKIAkJZGV2X3ByaXYt Pm1tLmFsaWFzaW5nX3BwZ3R0ID0gcHBndHQ7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuaAppbmRleCBhODViZDVjLi5kZGZmNmNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuaApAQCAtMzA4LDYgKzMwOCw4IEBAIHN0cnVjdCBpOTE1X2h3X3BwZ3R0IHsKIAkJc3RydWN0 IGk5MTVfcGFnZV9kaXJlY3RvcnlfZW50cnkgcGQ7CiAJfTsKIAorCXN0cnVjdCBpOTE1X3BhZ2Vf dGFibGVfZW50cnkgKnNjcmF0Y2hfcHQ7CisKIAlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRl ICpmaWxlX3ByaXY7CiAKIAlnZW42X3B0ZV90IF9faW9tZW0gKnBkX2FkZHI7Ci0tIAoyLjEuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK