From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhang Subject: [PATCH v4 2/8] drm/i915: Adds graphic address space ballooning logic Date: Tue, 10 Feb 2015 19:05:48 +0800 Message-ID: <1423566354-5532-3-git-send-email-yu.c.zhang@linux.intel.com> References: <1423566354-5532-1-git-send-email-yu.c.zhang@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 2D9AC89D77 for ; Tue, 10 Feb 2015 03:39:06 -0800 (PST) In-Reply-To: <1423566354-5532-1-git-send-email-yu.c.zhang@linux.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: daniel.vetter@ffwll.ch List-Id: intel-gfx@lists.freedesktop.org V2l0aCBJbnRlbCBHVlQtZywgdGhlIGdsb2JhbCBncmFwaGljIG1lbW9yeSBzcGFjZSBpcyBwYXJ0 aXRpb25lZCBieQptdWx0aXBsZSB2R1BVIGluc3RhbmNlcyBpbiBkaWZmZXJlbnQgVk1zLiBUaGUg YmFsbG9vbmluZyBjb2RlIGlzIGNhbGxlZAppbiBpOTE1X2dlbV9zZXR1cF9nbG9iYWxfZ3R0KCks IHV0aWxpemluZyB0aGUgZHJtIG1tIGFsbG9jYXRvciBBUElzIHRvCm1hcmsgdGhlIGdyYXBoaWMg YWRkcmVzcyBzcGFjZSB3aGljaCBhcmUgcGFydGl0aW9uZWQgb3V0IHRvIG90aGVyIHZHUFVzCmFz IHJlc2VydmVkLiBXaXRoIGJhbGxvb25pbmcsIGhvc3Qgc2lkZSBkb2VzIG5vdCBuZWVkIHRvIHRy YW5zbGF0ZSBhCmdyYWhwaWMgYWRkcmVzcyBmcm9tIGd1ZXN0IHZpZXcgdG8gaG9zdCB2aWV3LiBC eSBub3csIGN1cnJlbnQgaW1wbGVtZW50YXRpb24Kb25seSBzdXBwb3J0IHRoZSBzdGF0aWMgYmFs bG9vbmluZywgYnV0IGluIHRoZSBmdXR1cmUsIHdpdGggbW9yZSBjb29wZXJhdGlvbgpmcm9tIGd1 ZXN0IGRyaXZlciwgdGhlIHNhbWUgaW50ZXJmYWNlcyBjYW4gYmUgZXh0ZW5kZWQgdG8gZ3Jvdy9z aHJpbmsgdGhlCmd1ZXN0IGdyYXBoaWMgbWVtb3J5IGR5bmFtaWNhbGx5LgoKdjI6CnRha2UgQ2hy aXMgYW5kIERhbmllbCdzIGNvbW1lbnRzOgoJLSBubyBndWFyZCBwYWdlIGJldHdlZW4gZGlmZmVy ZW50IFZNcwoJLSB1c2UgZHJtX21tX3Jlc2VydmVfbm9kZSgpIHRvIGRvIHRoZSByZXNlcnZhdGlv biBmb3IgYmFsbG9vbmluZywKCWluc3RlYWQgb2YgdGhlIHByZXZpb3VzIGRybV9tbV9pbnNlcnRf bm9kZV9pbl9yYW5nZV9nZW5lcmljKCkKCnYzOgp0YWtlIERhbmllbCdzIGNvbW1lbnRzOgoJLSBt b3ZlIGJhbGxvb25pbmcgZnVuY3Rpb25zIGludG8gaTkxNV92Z3B1LmMKCS0gYWRkIGtlcm5lbGRv YyB0byBiYWxsb29uaW5nIGZ1bmN0aW9ucwoKdjQ6CnRha2UgVHZydGtvJ3MgY29tbWVudHM6Cgkt IG1vcmUgYWNjdXJhdGUgY29tbWVudHMgYW5kIGNvbW1pdCBtZXNzYWdlCgpTaWduZWQtb2ZmLWJ5 OiBZdSBaaGFuZyA8eXUuYy56aGFuZ0BsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEpp a2UgU29uZyA8amlrZS5zb25nQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogWmhpIFdhbmcgPHpo aS5hLndhbmdAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBFZGRpZSBEb25nIDxlZGRpZS5kb25n QGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8ICAx NyArKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYyAgICB8IDE3OCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf dmdwdS5oICAgIHwgICAyICsKIDMgZmlsZXMgY2hhbmdlZCwgMTk0IGluc2VydGlvbnMoKyksIDMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwppbmRleCBiNDhiNTg2 Li4wNTdmOTA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAtMjcsNiArMjcs NyBAQAogI2luY2x1ZGUgPGRybS9kcm1QLmg+CiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAj aW5jbHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJpOTE1X3ZncHUuaCIKICNpbmNsdWRlICJp OTE1X3RyYWNlLmgiCiAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCiAKQEAgLTE3NTYsNiArMTc1Nywx NiBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX3NldHVwX2dsb2JhbF9ndHQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAogCS8qIFN1YnRyYWN0IHRoZSBndWFyZCBwYWdlIC4uLiAqLwogCWRybV9tbV9p bml0KCZnZ3R0X3ZtLT5tbSwgc3RhcnQsIGVuZCAtIHN0YXJ0IC0gUEFHRV9TSVpFKTsKKworCWRl dl9wcml2LT5ndHQuYmFzZS5zdGFydCA9IHN0YXJ0OworCWRldl9wcml2LT5ndHQuYmFzZS50b3Rh bCA9IGVuZCAtIHN0YXJ0OworCisJaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldikpIHsKKwkJcmV0 ID0gaW50ZWxfdmd0X2JhbGxvb24oZGV2KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJ fQorCiAJaWYgKCFIQVNfTExDKGRldikpCiAJCWRldl9wcml2LT5ndHQuYmFzZS5tbS5jb2xvcl9h ZGp1c3QgPSBpOTE1X2d0dF9jb2xvcl9hZGp1c3Q7CiAKQEAgLTE3NzUsOSArMTc4Niw2IEBAIHN0 YXRpYyBpbnQgaTkxNV9nZW1fc2V0dXBfZ2xvYmFsX2d0dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCQl2bWEtPmJvdW5kIHw9IEdMT0JBTF9CSU5EOwogCX0KIAotCWRldl9wcml2LT5ndHQuYmFz ZS5zdGFydCA9IHN0YXJ0OwotCWRldl9wcml2LT5ndHQuYmFzZS50b3RhbCA9IGVuZCAtIHN0YXJ0 OwotCiAJLyogQ2xlYXIgYW55IG5vbi1wcmVhbGxvY2F0ZWQgYmxvY2tzICovCiAJZHJtX21tX2Zv cl9lYWNoX2hvbGUoZW50cnksICZnZ3R0X3ZtLT5tbSwgaG9sZV9zdGFydCwgaG9sZV9lbmQpIHsK IAkJRFJNX0RFQlVHX0tNUygiY2xlYXJpbmcgdW51c2VkIEdUVCBzcGFjZTogWyVseCwgJWx4XVxu IiwKQEAgLTE4MjksNiArMTgzNyw5IEBAIHZvaWQgaTkxNV9nbG9iYWxfZ3R0X2NsZWFudXAoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIAl9CiAKIAlpZiAoZHJtX21tX2luaXRpYWxpemVkKCZ2bS0+ bW0pKSB7CisJCWlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXYpKQorCQkJaW50ZWxfdmd0X2RlYmFs bG9vbigpOworCiAJCWRybV9tbV90YWtlZG93bigmdm0tPm1tKTsKIAkJbGlzdF9kZWwoJnZtLT5n bG9iYWxfbGluayk7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92 Z3B1LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYwppbmRleCA5OTVhNjAwLi41 ZWVlNzViIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYwpAQCAtODQsMyArODQsMTgxIEBAIHZv aWQgaTkxNV9jaGVja192Z3B1KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJZGV2X3ByaXYtPnZn cHUuYWN0aXZlID0gdHJ1ZTsKIAlEUk1fSU5GTygiVmlydHVhbCBHUFUgZm9yIEludGVsIEdWVC1n IGRldGVjdGVkLlxuIik7CiB9CisKK3N0cnVjdCBfYmFsbG9vbl9pbmZvXyB7CisJLyoKKwkgKiBU aGVyZSBhcmUgdXAgdG8gMiByZWdpb25zIHBlciBtYXBwYWJsZS91bm1hcHBhYmxlIGdyYXBoaWMK KwkgKiBtZW1vcnkgdGhhdCBtaWdodCBiZSBiYWxsb29uZWQuIEhlcmUsIGluZGV4IDAvMSBpcyBm b3IgbWFwcGFibGUKKwkgKiBncmFwaGljIG1lbW9yeSwgMi8zIGZvciB1bm1hcHBhYmxlIGdyYXBo aWMgbWVtb3J5LgorCSAqLworCXN0cnVjdCBkcm1fbW1fbm9kZSBzcGFjZVs0XTsKK307CisKK3N0 YXRpYyBzdHJ1Y3QgX2JhbGxvb25faW5mb18gYmxfaW5mbzsKKworLyoqCisgKiBpbnRlbF92Z3Rf ZGViYWxsb29uIC0gZGViYWxsb29uIHJlc2VydmVkIGdyYXBoaWNzIGFkZHJlc3MgdHJ1bmtzCisg KgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gZGVhbGxvY2F0ZSB0aGUgYmFsbG9vbmVk LW91dCBncmFwaGljIG1lbW9yeSwgd2hlbgorICogZHJpdmVyIGlzIHVubG9hZGVkIG9yIHdoZW4g YmFsbG9vbmluZyBmYWlscy4KKyAqLwordm9pZCBpbnRlbF92Z3RfZGViYWxsb29uKHZvaWQpCit7 CisJaW50IGk7CisKKwlEUk1fREVCVUcoIlZHVCBkZWJhbGxvb24uXG4iKTsKKworCWZvciAoaSA9 IDA7IGkgPCA0OyBpKyspIHsKKwkJaWYgKGJsX2luZm8uc3BhY2VbaV0uYWxsb2NhdGVkKQorCQkJ ZHJtX21tX3JlbW92ZV9ub2RlKCZibF9pbmZvLnNwYWNlW2ldKTsKKwl9CisKKwltZW1zZXQoJmJs X2luZm8sIDAsIHNpemVvZihibF9pbmZvKSk7Cit9CisKK3N0YXRpYyBpbnQgdmd0X2JhbGxvb25f c3BhY2Uoc3RydWN0IGRybV9tbSAqbW0sCisJCQkgICAgIHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9k ZSwKKwkJCSAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCit7CisJ dW5zaWduZWQgbG9uZyBzaXplID0gZW5kIC0gc3RhcnQ7CisKKwlpZiAoc3RhcnQgPT0gZW5kKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCURSTV9JTkZPKCJiYWxsb29uIHNwYWNlOiByYW5nZSBbIDB4 JWx4IC0gMHglbHggXSAlbHUgS2lCLlxuIiwKKwkJIHN0YXJ0LCBlbmQsIHNpemUgLyAxMDI0KTsK KworCW5vZGUtPnN0YXJ0ID0gc3RhcnQ7CisJbm9kZS0+c2l6ZSA9IHNpemU7CisKKwlyZXR1cm4g ZHJtX21tX3Jlc2VydmVfbm9kZShtbSwgbm9kZSk7Cit9CisKKy8qKgorICogaW50ZWxfdmd0X2Jh bGxvb24gLSBiYWxsb29uIG91dCByZXNlcnZlZCBncmFwaGljcyBhZGRyZXNzIHRydW5rcworICog QGRldjogZHJtIGRldmljZQorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHRoZSBp bml0aWFsaXphdGlvbiBzdGFnZSwgdG8gYmFsbG9vbiBvdXQgdGhlCisgKiBncmFwaGljIGFkZHJl c3Mgc3BhY2UgYWxsb2NhdGVkIHRvIG90aGVyIHZHUFVzLCBieSBtYXJraW5nIHRoZXNlIHNwYWNl cyBhcworICogcmVzZXJ2ZWQuIFRoZSBiYWxsb29uaW5nIHJlbGF0ZWQga25vd2xlZGdlKHN0YXJ0 aW5nIGFkZHJlc3MgYW5kIHNpemUgb2YKKyAqIHRoZSBtYXBwYWJsZS91bm1hcHBhYmxlIGdyYXBo aWMgbWVtb3J5KSBpcyBkZXNjcmliZWQgaW4gdGhlIHZndF9pZiBzdHJ1Y3R1cmUKKyAqIGluIGEg cmVzZXJ2ZWQgbW1pbyByYW5nZS4KKyAqCisgKiBUbyBnaXZlIGFuIGV4YW1wbGUsIHRoZSBkcmF3 aW5nIGJlbG93IGRlcGljdHMgb25lIHR5cGljYWwgc2NlbmFyaW8gYWZ0ZXIKKyAqIGJhbGxvb25p bmcuIEhlcmUgdGhlIHZHUFUxIGhhcyAyIHBpZWNlcyBvZiBncmFwaGljIGFkZHJlc3Mgc3BhY2Vz IGJhbGxvb25lZAorICogb3V0IGVhY2ggZm9yIHRoZSBtYXBwYWJsZSBhbmQgdGhlIG5vbi1tYXBw YWJsZSBwYXJ0LiBGcm9tIHRoZSB2R1BVMSBwb2ludCBvZgorICogdmlldywgdGhlIHRvdGFsIHNp emUgaXMgdGhlIHNhbWUgYXMgdGhlIHBoeXNpY2FsIG9uZSwgd2l0aCB0aGUgc3RhcnQgYWRkcmVz cworICogb2YgaXRzIGdyYXBoaWMgc3BhY2UgYmVpbmcgemVyby4gWWV0IHRoZXJlIGFyZSBzb21l IHBvcnRpb25zIGJhbGxvb25lZCBvdXQoCisgKiB0aGUgc2hhZG93IHBhcnQsIHdoaWNoIGFyZSBt YXJrZWQgYXMgcmVzZXJ2ZWQgYnkgZHJtIGFsbG9jYXRvcikuIEZyb20gdGhlCisgKiBob3N0IHBv aW50IG9mIHZpZXcsIHRoZSBncmFwaGljIGFkZHJlc3Mgc3BhY2UgaXMgcGFydGl0aW9uZWQgYnkg bXVsdGlwbGUKKyAqIHZHUFVzIGluIGRpZmZlcmVudCBWTXMuCisgKgorICogICAgICAgICAgICAg ICAgICAgICAgICB2R1BVMSB2aWV3ICAgICAgICAgSG9zdCB2aWV3CisgKiAgICAgICAgICAgICAw IC0tLS0tLT4gKy0tLS0tLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0tKworICogICAgICAgICAgICAg ICBeICAgICAgIHwvLy8vLy8vLy8vL3wgICAgIHwgICB2R1BVMyAgIHwKKyAqICAgICAgICAgICAg ICAgfCAgICAgICB8Ly8vLy8vLy8vLy98ICAgICArLS0tLS0tLS0tLS0rCisgKiAgICAgICAgICAg ICAgIHwgICAgICAgfC8vLy8vLy8vLy8vfCAgICAgfCAgIHZHUFUyICAgfAorICogICAgICAgICAg ICAgICB8ICAgICAgICstLS0tLS0tLS0tLSsgICAgICstLS0tLS0tLS0tLSsKKyAqICAgICAgICBt YXBwYWJsZSBHTSAgICB8IGF2YWlsYWJsZSB8ID09PiB8ICAgdkdQVTEgICB8CisgKiAgICAgICAg ICAgICAgIHwgICAgICAgKy0tLS0tLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0tKworICogICAgICAg ICAgICAgICB8ICAgICAgIHwvLy8vLy8vLy8vL3wgICAgIHwgICAgICAgICAgIHwKKyAqICAgICAg ICAgICAgICAgdiAgICAgICB8Ly8vLy8vLy8vLy98ICAgICB8ICAgSG9zdCAgICB8CisgKiAgICAg ICAgICAgICAgICs9PT09PT09Kz09PT09PT09PT09KyAgICAgKz09PT09PT09PT09KworICogICAg ICAgICAgICAgICBeICAgICAgIHwvLy8vLy8vLy8vL3wgICAgIHwgICB2R1BVMyAgIHwKKyAqICAg ICAgICAgICAgICAgfCAgICAgICB8Ly8vLy8vLy8vLy98ICAgICArLS0tLS0tLS0tLS0rCisgKiAg ICAgICAgICAgICAgIHwgICAgICAgfC8vLy8vLy8vLy8vfCAgICAgfCAgIHZHUFUyICAgfAorICog ICAgICAgICAgICAgICB8ICAgICAgICstLS0tLS0tLS0tLSsgICAgICstLS0tLS0tLS0tLSsKKyAq ICAgICAgdW5tYXBwYWJsZSBHTSAgICB8IGF2YWlsYWJsZSB8ID09PiB8ICAgdkdQVTEgICB8Cisg KiAgICAgICAgICAgICAgIHwgICAgICAgKy0tLS0tLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0tKwor ICogICAgICAgICAgICAgICB8ICAgICAgIHwvLy8vLy8vLy8vL3wgICAgIHwgICAgICAgICAgIHwK KyAqICAgICAgICAgICAgICAgfCAgICAgICB8Ly8vLy8vLy8vLy98ICAgICB8ICAgSG9zdCAgICB8 CisgKiAgICAgICAgICAgICAgIHYgICAgICAgfC8vLy8vLy8vLy8vfCAgICAgfCAgICAgICAgICAg fAorICogdG90YWwgR00gc2l6ZSAtLS0tLS0+ICstLS0tLS0tLS0tLSsgICAgICstLS0tLS0tLS0t LSsKKyAqCisgKiBSZXR1cm5zOgorICogemVybyBvbiBzdWNjZXNzLCBub24temVybyBpZiBjb25m aWd1cmF0aW9uIGludmFsaWQgb3IgYmFsbG9vbmluZyBmYWlsZWQKKyAqLworaW50IGludGVsX3Zn dF9iYWxsb29uKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3Bh Y2UgKmdndHRfdm0gPSAmZGV2X3ByaXYtPmd0dC5iYXNlOworCXVuc2lnbmVkIGxvbmcgZ2d0dF92 bV9lbmQgPSBnZ3R0X3ZtLT5zdGFydCArIGdndHRfdm0tPnRvdGFsOworCisJdW5zaWduZWQgbG9u ZyBtYXBwYWJsZV9iYXNlLCBtYXBwYWJsZV9zaXplLCBtYXBwYWJsZV9lbmQ7CisJdW5zaWduZWQg bG9uZyB1bm1hcHBhYmxlX2Jhc2UsIHVubWFwcGFibGVfc2l6ZSwgdW5tYXBwYWJsZV9lbmQ7CisJ aW50IHJldDsKKworCW1hcHBhYmxlX2Jhc2UgPSBJOTE1X1JFQUQodmd0aWZfcmVnKGF2YWlsX3Jz Lm1hcHBhYmxlX2dtYWRyLmJhc2UpKTsKKwltYXBwYWJsZV9zaXplID0gSTkxNV9SRUFEKHZndGlm X3JlZyhhdmFpbF9ycy5tYXBwYWJsZV9nbWFkci5zaXplKSk7CisJdW5tYXBwYWJsZV9iYXNlID0g STkxNV9SRUFEKHZndGlmX3JlZyhhdmFpbF9ycy5ub25tYXBwYWJsZV9nbWFkci5iYXNlKSk7CisJ dW5tYXBwYWJsZV9zaXplID0gSTkxNV9SRUFEKHZndGlmX3JlZyhhdmFpbF9ycy5ub25tYXBwYWJs ZV9nbWFkci5zaXplKSk7CisKKwltYXBwYWJsZV9lbmQgPSBtYXBwYWJsZV9iYXNlICsgbWFwcGFi bGVfc2l6ZTsKKwl1bm1hcHBhYmxlX2VuZCA9IHVubWFwcGFibGVfYmFzZSArIHVubWFwcGFibGVf c2l6ZTsKKworCURSTV9JTkZPKCJWR1QgYmFsbG9vbmluZyBjb25maWd1cmF0aW9uOlxuIik7CisJ RFJNX0lORk8oIk1hcHBhYmxlIGdyYXBoaWMgbWVtb3J5OiBiYXNlIDB4JWx4IHNpemUgJWxkS2lC XG4iLAorCQkgbWFwcGFibGVfYmFzZSwgbWFwcGFibGVfc2l6ZSAvIDEwMjQpOworCURSTV9JTkZP KCJVbm1hcHBhYmxlIGdyYXBoaWMgbWVtb3J5OiBiYXNlIDB4JWx4IHNpemUgJWxkS2lCXG4iLAor CQkgdW5tYXBwYWJsZV9iYXNlLCB1bm1hcHBhYmxlX3NpemUgLyAxMDI0KTsKKworCWlmIChtYXBw YWJsZV9iYXNlIDwgZ2d0dF92bS0+c3RhcnQgfHwKKwkgICAgbWFwcGFibGVfZW5kID4gZGV2X3By aXYtPmd0dC5tYXBwYWJsZV9lbmQgfHwKKwkgICAgdW5tYXBwYWJsZV9iYXNlIDwgZGV2X3ByaXYt Pmd0dC5tYXBwYWJsZV9lbmQgfHwKKwkgICAgdW5tYXBwYWJsZV9lbmQgPiBnZ3R0X3ZtX2VuZCkg eworCQlEUk1fRVJST1IoIkludmFsaWQgYmFsbG9vbmluZyBjb25maWd1cmF0aW9uIVxuIik7CisJ CXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIFVubWFwcGFibGUgZ3JhcGhpYyBtZW1vcnkgYmFs bG9vbmluZyAqLworCWlmICh1bm1hcHBhYmxlX2Jhc2UgPiBkZXZfcHJpdi0+Z3R0Lm1hcHBhYmxl X2VuZCkgeworCQlyZXQgPSB2Z3RfYmFsbG9vbl9zcGFjZSgmZ2d0dF92bS0+bW0sCisJCQkJCSZi bF9pbmZvLnNwYWNlWzJdLAorCQkJCQlkZXZfcHJpdi0+Z3R0Lm1hcHBhYmxlX2VuZCwKKwkJCQkJ dW5tYXBwYWJsZV9iYXNlKTsKKworCQlpZiAocmV0KQorCQkJZ290byBlcnI7CisJfQorCisJLyoK KwkgKiBObyBuZWVkIHRvIHBhcnRpdGlvbiBvdXQgdGhlIGxhc3QgcGh5c2ljYWwgcGFnZSwKKwkg KiBiZWNhdXNlIGl0IGlzIHJlc2VydmVkIHRvIHRoZSBndWFyZCBwYWdlLgorCSAqLworCWlmICh1 bm1hcHBhYmxlX2VuZCA8IGdndHRfdm1fZW5kIC0gUEFHRV9TSVpFKSB7CisJCXJldCA9IHZndF9i YWxsb29uX3NwYWNlKCZnZ3R0X3ZtLT5tbSwKKwkJCQkJJmJsX2luZm8uc3BhY2VbM10sCisJCQkJ CXVubWFwcGFibGVfZW5kLAorCQkJCQlnZ3R0X3ZtX2VuZCAtIFBBR0VfU0laRSk7CisJCWlmIChy ZXQpCisJCQlnb3RvIGVycjsKKwl9CisKKwkvKiBNYXBwYWJsZSBncmFwaGljIG1lbW9yeSBiYWxs b29uaW5nICovCisJaWYgKG1hcHBhYmxlX2Jhc2UgPiBnZ3R0X3ZtLT5zdGFydCkgeworCQlyZXQg PSB2Z3RfYmFsbG9vbl9zcGFjZSgmZ2d0dF92bS0+bW0sCisJCQkJCSZibF9pbmZvLnNwYWNlWzBd LAorCQkJCQlnZ3R0X3ZtLT5zdGFydCwgbWFwcGFibGVfYmFzZSk7CisKKwkJaWYgKHJldCkKKwkJ CWdvdG8gZXJyOworCX0KKworCWlmIChtYXBwYWJsZV9lbmQgPCBkZXZfcHJpdi0+Z3R0Lm1hcHBh YmxlX2VuZCkgeworCQlyZXQgPSB2Z3RfYmFsbG9vbl9zcGFjZSgmZ2d0dF92bS0+bW0sCisJCQkJ CSZibF9pbmZvLnNwYWNlWzFdLAorCQkJCQltYXBwYWJsZV9lbmQsCisJCQkJCWRldl9wcml2LT5n dHQubWFwcGFibGVfZW5kKTsKKworCQlpZiAocmV0KQorCQkJZ290byBlcnI7CisJfQorCisJRFJN X0lORk8oIlZHVCBiYWxsb29uIHN1Y2Nlc3NmdWxseVxuIik7CisJcmV0dXJuIDA7CisKK2VycjoK KwlEUk1fRVJST1IoIlZHVCBiYWxsb29uIGZhaWxcbiIpOworCWludGVsX3ZndF9kZWJhbGxvb24o KTsKKwlyZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV92Z3B1LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaAppbmRleCBhYTcyZTE0 Li4zZWQwMWE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaApAQCAtODEsNSArODEsNyBAQCBz dHJ1Y3Qgdmd0X2lmIHsKIAkoVkdUX1BWSU5GT19QQUdFICsgKGxvbmcpJigoc3RydWN0IHZndF9p ZiAqKU5VTEwpLT54KQogCiBleHRlcm4gdm9pZCBpOTE1X2NoZWNrX3ZncHUoc3RydWN0IGRybV9k ZXZpY2UgKmRldik7CitleHRlcm4gaW50IGludGVsX3ZndF9iYWxsb29uKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOworZXh0ZXJuIHZvaWQgaW50ZWxfdmd0X2RlYmFsbG9vbih2b2lkKTsKIAogI2Vu ZGlmIC8qIF9JOTE1X1ZHUFVfSF8gKi8KLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=