From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 093/190] drm/i915: Move the forced switch back to the kernel context into eviction Date: Mon, 11 Jan 2016 10:44:37 +0000 Message-ID: <1452509174-16671-7-git-send-email-chris@chris-wilson.co.uk> References: <1452503961-14837-1-git-send-email-chris@chris-wilson.co.uk> <1452509174-16671-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-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by gabe.freedesktop.org (Postfix) with ESMTPS id 943086E2D0 for ; Mon, 11 Jan 2016 02:46:34 -0800 (PST) Received: by mail-wm0-f67.google.com with SMTP id f206so25660382wmf.2 for ; Mon, 11 Jan 2016 02:46:34 -0800 (PST) In-Reply-To: <1452509174-16671-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 Q3VycmVudGx5LCB3ZSBhbHdheXMgc3dpdGNoIGJhY2sgdG8gdGhlIGtlcm5lbCBjb250ZXh0IChp ZiBhdmFpbGFibGUsCmkuZS4gbGVnYWN5IEhXIGNvbnRleHRzIG5vdCBleGVjbGlzdHMpIHdoZW5l dmVyIHdlIHRyeSBhbmQgaWRsZSB0aGUgR1BVLgpXZSBhY3R1YWxseSBvbmx5IHJlcXVpcmUgdGhl IHN3aXRjaCB3aGVuIHRyeWluZyB0byBldmljdCBldmVyeXRoaW5nIChpbgpvcmRlciB0byBwcmV2 ZW50IGZyYWdtZW50YXRpb24gZnJvbSBwbGFjZW1lbnQgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUK Y29udGV4dCkgZnJvbSB0aGUgZ2xvYmFsIEdUVCwgc28gbW92ZSB0aGUgZm9yY2VkIHN3aXRjaCBp bnRvIHRoYXQgb25lCmNhbGxzaXRlLgoKSW4gdGhlIHByb2Nlc3MsIHVwZGF0ZSB0aGUgY29tbWVu dHMgcmVnYXJkaW5nIG1vZGUgb2Ygb3BlcmF0aW9uIGluCnBhcnRpY3VsYXIgdGhlIGRpc3RpbmN0 aW9uIGJldHdlZW4gZXZpY3RpbmcgZnJvbSB0aGUgZ2xvYmFsIEdUVCAod2hpY2gKbWF5IGNvbnRh aW4gdW50cmFja2VkIGl0ZW1zIGFuZCB0cmFuc2llbnQgZ2xvYmFsIHBpbnMpIGFuZCB0aGUKcGVy LXByb2Nlc3MgR1RULgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICB8 ICAxNCAtLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jIHwgMTQwICsr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgODggaW5z ZXJ0aW9ucygrKSwgNjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXgg MDU0ZTExY2ZmMDBmLi45ODkyMjJlYjEwN2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAt MjY5MSwyMSArMjY5MSw3IEBAIGludCBpOTE1X2dwdV9pZGxlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZzsKIAlpbnQgcmV0LCBpOwogCi0JLyog Rmx1c2ggZXZlcnl0aGluZyBvbnRvIHRoZSBpbmFjdGl2ZSBsaXN0LiAqLwogCWZvcl9lYWNoX3Jp bmcocmluZywgZGV2X3ByaXYsIGkpIHsKLQkJaWYgKCFpOTE1LmVuYWJsZV9leGVjbGlzdHMpIHsK LQkJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwotCi0JCQlyZXEgPSBpOTE1X2dl bV9yZXF1ZXN0X2FsbG9jKHJpbmcsIHJpbmctPmRlZmF1bHRfY29udGV4dCk7Ci0JCQlpZiAoSVNf RVJSKHJlcSkpCi0JCQkJcmV0dXJuIFBUUl9FUlIocmVxKTsKLQotCQkJcmV0ID0gaTkxNV9zd2l0 Y2hfY29udGV4dChyZXEpOwotCQkJaTkxNV9hZGRfcmVxdWVzdF9ub19mbHVzaChyZXEpOwotCQkJ aWYgKHJldCkKLQkJCQlyZXR1cm4gcmV0OwotCQl9Ci0KIAkJcmV0ID0gaW50ZWxfZW5naW5lX2lk bGUocmluZyk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZpY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2V2aWN0LmMKaW5kZXggZWExZjhkMWJkMjI4Li5iN2JjYzMyNGE3YTcgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZpY3QuYwpAQCAtMzMsNiArMzMsMzYgQEAKICNpbmNsdWRl ICJpbnRlbF9kcnYuaCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCiAKK3N0YXRpYyBpbnQgc3dp dGNoX3RvX3Bpbm5lZF9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK K3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nOworCWludCByZXQsIGk7CisJaW50IGNv dW50ID0gMDsKKworCWlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpCisJCXJldHVybiAwOworCisJ Zm9yX2VhY2hfcmluZyhyaW5nLCBkZXZfcHJpdiwgaSkgeworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcTsKKworCQlpZiAocmluZy0+bGFzdF9jb250ZXh0ID09IHJpbmctPmRlZmF1 bHRfY29udGV4dCkKKwkJCWNvbnRpbnVlOworCisJCXJlcSA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxs b2MocmluZywgcmluZy0+ZGVmYXVsdF9jb250ZXh0KTsKKwkJaWYgKElTX0VSUihyZXEpKQorCQkJ cmV0dXJuIFBUUl9FUlIocmVxKTsKKworCQlyZXQgPSBpOTE1X3N3aXRjaF9jb250ZXh0KHJlcSk7 CisJCWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxKTsKKwkJaWYgKHJldCkKKwkJCXJldHVy biByZXQ7CisKKwkJY291bnQrKzsKKwl9CisKKwlyZXR1cm4gY291bnQ7Cit9CisKIHN0YXRpYyBi b29sCiBtYXJrX2ZyZWUoc3RydWN0IGk5MTVfdm1hICp2bWEsIHN0cnVjdCBsaXN0X2hlYWQgKnVu d2luZCkKIHsKQEAgLTc2LDM3ICsxMDYsMzMgQEAgaTkxNV9nZW1fZXZpY3Rfc29tZXRoaW5nKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCQkJ IHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAogCQkJIHVuc2lnbmVkIGZs YWdzKQogewotCXN0cnVjdCBsaXN0X2hlYWQgZXZpY3Rpb25fbGlzdCwgdW53aW5kX2xpc3Q7Ci0J c3RydWN0IGk5MTVfdm1hICp2bWE7Ci0JaW50IHJldCA9IDA7Ci0JaW50IHBhc3MgPSAwOworCXN0 cnVjdCBsaXN0X2hlYWQgZXZpY3Rpb25fbGlzdDsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpwaGFzZXNb XSA9IHsKKwkJJnZtLT5pbmFjdGl2ZV9saXN0LAorCQkmdm0tPmFjdGl2ZV9saXN0LAorCQlOVUxM LAorCX0sICoqcGhhc2U7CisJc3RydWN0IGk5MTVfdm1hICp2bWEsICpuZXh0OworCWludCByZXQ7 CiAKIAl0cmFjZV9pOTE1X2dlbV9ldmljdChkZXYsIG1pbl9zaXplLCBhbGlnbm1lbnQsIGZsYWdz KTsKIAogCS8qCiAJICogVGhlIGdvYWwgaXMgdG8gZXZpY3Qgb2JqZWN0cyBhbmQgYW1hbGdhbWF0 ZSBzcGFjZSBpbiBMUlUgb3JkZXIuCiAJICogVGhlIG9sZGVzdCBpZGxlIG9iamVjdHMgcmVzaWRl IG9uIHRoZSBpbmFjdGl2ZSBsaXN0LCB3aGljaCBpcyBpbgotCSAqIHJldGlyZW1lbnQgb3JkZXIu IFRoZSBuZXh0IG9iamVjdHMgdG8gcmV0aXJlIGFyZSB0aG9zZSBvbiB0aGUgKHBlcgotCSAqIHJp bmcpIGFjdGl2ZSBsaXN0IHRoYXQgZG8gbm90IGhhdmUgYW4gb3V0c3RhbmRpbmcgZmx1c2guIE9u Y2UgdGhlCi0JICogaGFyZHdhcmUgcmVwb3J0cyBjb21wbGV0aW9uICh0aGUgc2Vxbm8gaXMgdXBk YXRlZCBhZnRlciB0aGUKLQkgKiBiYXRjaGJ1ZmZlciBoYXMgYmVlbiBmaW5pc2hlZCkgdGhlIGNs ZWFuIGJ1ZmZlciBvYmplY3RzIHdvdWxkCi0JICogYmUgcmV0aXJlZCB0byB0aGUgaW5hY3RpdmUg bGlzdC4gQW55IGRpcnR5IG9iamVjdHMgd291bGQgYmUgYWRkZWQKLQkgKiB0byB0aGUgdGFpbCBv ZiB0aGUgZmx1c2hpbmcgbGlzdC4gU28gYWZ0ZXIgcHJvY2Vzc2luZyB0aGUgY2xlYW4KLQkgKiBh Y3RpdmUgb2JqZWN0cyB3ZSBuZWVkIHRvIGVtaXQgYSBNSV9GTFVTSCB0byByZXRpcmUgdGhlIGZs dXNoaW5nCi0JICogbGlzdCwgaGVuY2UgdGhlIHJldGlyZW1lbnQgb3JkZXIgb2YgdGhlIGZsdXNo aW5nIGxpc3QgaXMgaW4KLQkgKiBhZHZhbmNlIG9mIHRoZSBkaXJ0eSBvYmplY3RzIG9uIHRoZSBh Y3RpdmUgbGlzdHMuCisJICogcmV0aXJlbWVudCBvcmRlci4gVGhlIG5leHQgb2JqZWN0cyB0byBy ZXRpcmUgYXJlIHRob3NlIGluIGZsaWdodCwKKwkgKiBvbiB0aGUgYWN0aXZlIGxpc3QsIGFnYWlu IGluIHJldGlyZW1lbnQgb3JkZXIuCiAJICoKIAkgKiBUaGUgcmV0aXJlbWVudCBzZXF1ZW5jZSBp cyB0aHVzOgogCSAqICAgMS4gSW5hY3RpdmUgb2JqZWN0cyAoYWxyZWFkeSByZXRpcmVkKQotCSAq ICAgMi4gQ2xlYW4gYWN0aXZlIG9iamVjdHMKLQkgKiAgIDMuIEZsdXNoaW5nIGxpc3QKLQkgKiAg IDQuIERpcnR5IGFjdGl2ZSBvYmplY3RzLgorCSAqICAgMi4gQWN0aXZlIG9iamVjdHMgKHdpbGwg c3RhbGwgb24gdW5iaW5kaW5nKQogCSAqCiAJICogT24gZWFjaCBsaXN0LCB0aGUgb2xkZXN0IG9i amVjdHMgbGllIGF0IHRoZSBIRUFEIHdpdGggdGhlIGZyZXNoZXN0CiAJICogb2JqZWN0IG9uIHRo ZSBUQUlMLgogCSAqLwogCi0JSU5JVF9MSVNUX0hFQUQoJnVud2luZF9saXN0KTsKK3NlYXJjaF9h Z2FpbjoKKwlJTklUX0xJU1RfSEVBRCgmZXZpY3Rpb25fbGlzdCk7CiAJaWYgKHN0YXJ0ICE9IDAg fHwgZW5kICE9IHZtLT50b3RhbCkgewogCQlkcm1fbW1faW5pdF9zY2FuX3dpdGhfcmFuZ2UoJnZt LT5tbSwgbWluX3NpemUsCiAJCQkJCSAgICBhbGlnbm1lbnQsIGNhY2hlX2xldmVsLApAQCAtMTE0 LDI2ICsxNDAsMTkgQEAgaTkxNV9nZW1fZXZpY3Rfc29tZXRoaW5nKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCX0gZWxzZQogCQlkcm1fbW1f aW5pdF9zY2FuKCZ2bS0+bW0sIG1pbl9zaXplLCBhbGlnbm1lbnQsIGNhY2hlX2xldmVsKTsKIAot c2VhcmNoX2FnYWluOgotCS8qIEZpcnN0IHNlZSBpZiB0aGVyZSBpcyBhIGxhcmdlIGVub3VnaCBj b250aWd1b3VzIGlkbGUgcmVnaW9uLi4uICovCi0JbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZ2 bS0+aW5hY3RpdmVfbGlzdCwgdm1fbGluaykgewotCQlpZiAobWFya19mcmVlKHZtYSwgJnVud2lu ZF9saXN0KSkKLQkJCWdvdG8gZm91bmQ7Ci0JfQotCiAJaWYgKGZsYWdzICYgUElOX05PTkJMT0NL KQotCQlnb3RvIG5vbmU7CisJCXBoYXNlc1sxXSA9IE5VTEw7CiAKLQkvKiBOb3cgbWVyZ2UgaW4g dGhlIHNvb24tdG8tYmUtZXhwaXJlZCBvYmplY3RzLi4uICovCi0JbGlzdF9mb3JfZWFjaF9lbnRy eSh2bWEsICZ2bS0+YWN0aXZlX2xpc3QsIHZtX2xpbmspIHsKLQkJaWYgKG1hcmtfZnJlZSh2bWEs ICZ1bndpbmRfbGlzdCkpCi0JCQlnb3RvIGZvdW5kOwotCX0KKwlwaGFzZSA9IHBoYXNlczsKKwlk byB7CisJCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAqcGhhc2UsIHZtX2xpbmspCisJCQlpZiAo bWFya19mcmVlKHZtYSwgJmV2aWN0aW9uX2xpc3QpKQorCQkJCWdvdG8gZm91bmQ7CisJfSB3aGls ZSAoKisrcGhhc2UpOwogCi1ub25lOgogCS8qIE5vdGhpbmcgZm91bmQsIGNsZWFuIHVwIGFuZCBi YWlsIG91dCEgKi8KLQl3aGlsZSAoIWxpc3RfZW1wdHkoJnVud2luZF9saXN0KSkgewotCQl2bWEg PSBsaXN0X2ZpcnN0X2VudHJ5KCZ1bndpbmRfbGlzdCwKKwl3aGlsZSAoIWxpc3RfZW1wdHkoJmV2 aWN0aW9uX2xpc3QpKSB7CisJCXZtYSA9IGxpc3RfZmlyc3RfZW50cnkoJmV2aWN0aW9uX2xpc3Qs CiAJCQkJICAgICAgIHN0cnVjdCBpOTE1X3ZtYSwKIAkJCQkgICAgICAgZXhlY19saXN0KTsKIAkJ cmV0ID0gZHJtX21tX3NjYW5fcmVtb3ZlX2Jsb2NrKCZ2bWEtPm5vZGUpOwpAQCAtMTQzLDEzICsx NjIsMjQgQEAgbm9uZToKIAl9CiAKIAkvKiBDYW4gd2UgdW5waW4gc29tZSBvYmplY3RzIHN1Y2gg YXMgaWRsZSBodyBjb250ZW50cywKLQkgKiBvciBwZW5kaW5nIGZsaXBzPworCSAqIG9yIHBlbmRp bmcgZmxpcHM/IEJ1dCBzaW5jZSBvbmx5IHRoZSBHR1RUIGhhcyBnbG9iYWwgZW50cmllcworCSAq IHN1Y2ggYXMgc2Nhbm91dHMsIHJpbmJ1ZmZlcnMgYW5kIGNvbnRleHRzLCB3ZSBjYW4gc2tpcCB0 aGUKKwkgKiBwdXJnZSB3aGVuIGluc3BlY3RpbmcgcGVyLXByb2Nlc3MgbG9jYWwgYWRkcmVzcyBz cGFjZXMuCiAJICovCi0JaWYgKGZsYWdzICYgUElOX05PTkJMT0NLKQorCWlmICghaTkxNV9pc19n Z3R0KHZtKSB8fCBmbGFncyAmIFBJTl9OT05CTE9DSykKIAkJcmV0dXJuIC1FTk9TUEM7CiAKLQkv KiBPbmx5IGlkbGUgdGhlIEdQVSBhbmQgcmVwZWF0IHRoZSBzZWFyY2ggb25jZSAqLwotCWlmIChw YXNzKysgPT0gMCkgeworCS8qIE5vdCBldmVyeXRoaW5nIGluIHRoZSBHR1RUIGlzIHRyYWNrZWQg dmlhIHZtYSAob3RoZXJ3aXNlIHdlCisJICogY291bGQgZXZpY3QgYXMgcmVxdWlyZWQgd2l0aCBt aW5pbWFsIHN0YWxsaW5nKSBzbyB3ZSBhcmUgZm9yY2VkCisJICogdG8gaWRsZSB0aGUgR1BVIGFu ZCBleHBsaWNpdGx5IHJldGlyZSBvdXRzdGFuZGluZyByZXF1ZXN0cyBpbgorCSAqIHRoZSBob3Bl cyB0aGF0IHdlIGNhbiB0aGVuIHJlbW92ZSBjb250ZXh0cyBhbmQgdGhlIGxpa2Ugb25seQorCSAq IGJvdW5kIGJ5IHRoZWlyIGFjdGl2ZSByZWZlcmVuY2UuCisJICovCisJcmV0ID0gc3dpdGNoX3Rv X3Bpbm5lZF9jb250ZXh0KHRvX2k5MTUoZGV2KSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiBy ZXQ7CisKKwlpZiAocmV0ID4gMCkgewogCQlyZXQgPSBpOTE1X2dwdV9pZGxlKGRldik7CiAJCWlm IChyZXQpCiAJCQlyZXR1cm4gcmV0OwpAQCAtMTY2LDE5ICsxOTYsMTYgQEAgbm9uZToKIAogZm91 bmQ6CiAJLyogZHJtX21tIGRvZXNuJ3QgYWxsb3cgYW55IG90aGVyIG90aGVyIG9wZXJhdGlvbnMg d2hpbGUKLQkgKiBzY2FubmluZywgdGhlcmVmb3JlIHN0b3JlIHRvIGJlIGV2aWN0ZWQgb2JqZWN0 cyBvbiBhCi0JICogdGVtcG9yYXJ5IGxpc3QuICovCi0JSU5JVF9MSVNUX0hFQUQoJmV2aWN0aW9u X2xpc3QpOwotCXdoaWxlICghbGlzdF9lbXB0eSgmdW53aW5kX2xpc3QpKSB7Ci0JCXZtYSA9IGxp c3RfZmlyc3RfZW50cnkoJnVud2luZF9saXN0LAotCQkJCSAgICAgICBzdHJ1Y3QgaTkxNV92bWEs Ci0JCQkJICAgICAgIGV4ZWNfbGlzdCk7Ci0JCWlmIChkcm1fbW1fc2Nhbl9yZW1vdmVfYmxvY2so JnZtYS0+bm9kZSkpIHsKLQkJCWxpc3RfbW92ZSgmdm1hLT5leGVjX2xpc3QsICZldmljdGlvbl9s aXN0KTsKKwkgKiBzY2FubmluZywgdGhlcmVmb3JlIHN0b3JlIHRvLWJlLWV2aWN0ZWQgb2JqZWN0 cyBvbiBhCisJICogdGVtcG9yYXJ5IGxpc3QgYW5kIHRha2UgYSByZWZlcmVuY2UgZm9yIGFsbCBi ZWZvcmUKKwkgKiBjYWxsaW5nIHVuYmluZCAod2hpY2ggbWF5IHJlbW92ZSB0aGUgYWN0aXZlIHJl ZmVyZW5jZQorCSAqIG9mIGFueSBvZiBvdXIgb2JqZWN0cywgdGh1cyBjb3JydXB0aW5nIHRoZSBs aXN0KS4KKwkgKi8KKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCBuZXh0LCAmZXZpY3Rp b25fbGlzdCwgZXhlY19saXN0KSB7CisJCWlmIChkcm1fbW1fc2Nhbl9yZW1vdmVfYmxvY2soJnZt YS0+bm9kZSkpCiAJCQlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2UoJnZtYS0+b2JqLT5iYXNlKTsK LQkJCWNvbnRpbnVlOwotCQl9Ci0JCWxpc3RfZGVsX2luaXQoJnZtYS0+ZXhlY19saXN0KTsKKwkJ ZWxzZQorCQkJbGlzdF9kZWxfaW5pdCgmdm1hLT5leGVjX2xpc3QpOwogCX0KIAogCS8qIFVuYmlu ZGluZyB3aWxsIGVtaXQgYW55IHJlcXVpcmVkIGZsdXNoZXMgKi8KQEAgLTE5NSw3ICsyMjIsNiBA QCBmb3VuZDoKIAogCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZShvYmopOwogCX0KLQogCXJl dHVybiByZXQ7CiB9CiAKQEAgLTI2MSwxMiArMjg3LDIyIEBAIGludCBpOTE1X2dlbV9ldmljdF92 bShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwgYm9vbCBkb19pZGxlKQogCXRyYWNlX2k5 MTVfZ2VtX2V2aWN0X3ZtKHZtKTsKIAogCWlmIChkb19pZGxlKSB7CisJCS8qIFN3aXRjaCBiYWNr IHRvIHRoZSBkZWZhdWx0IGNvbnRleHQgaW4gb3JkZXIgdG8gdW5waW4KKwkJICogdGhlIGV4aXN0 aW5nIGNvbnRleHQgb2JqZWN0cy4gSG93ZXZlciwgc3VjaCBvYmplY3RzIG9ubHkKKwkJICogcGlu IHRoZW1zZWx2ZXMgaW5zaWRlIHRoZSBnbG9iYWwgR1RUIGFuZCBwZXJmb3JtaW5nIHRoZQorCQkg KiBzd2l0Y2ggb3RoZXJ3aXNlIGlzIGluZWZmZWN0aXZlLgorCQkgKi8KKwkJaWYgKGk5MTVfaXNf Z2d0dCh2bSkpIHsKKwkJCXJldCA9IHN3aXRjaF90b19waW5uZWRfY29udGV4dCh0b19pOTE1KHZt LT5kZXYpKTsKKwkJCWlmIChyZXQpCisJCQkJcmV0dXJuIHJldDsKKwkJfQorCiAJCXJldCA9IGk5 MTVfZ3B1X2lkbGUodm0tPmRldik7Ci0JCWlmIChyZXQpCisJCWlmIChyZXQgPCAwKQogCQkJcmV0 dXJuIHJldDsKIAogCQlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHModm0tPmRldik7Ci0KIAkJV0FS Tl9PTighbGlzdF9lbXB0eSgmdm0tPmFjdGl2ZV9saXN0KSk7CiAJfQogCi0tIAoyLjcuMC5yYzMK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==