From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 7/9] drm/i915: Remove queue_flip pointer. Date: Thu, 26 May 2016 12:38:03 +0200 Message-ID: <1464259085-13604-8-git-send-email-maarten.lankhorst@linux.intel.com> References: <1464259085-13604-1-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4D0846EA93 for ; Thu, 26 May 2016 10:38:11 +0000 (UTC) In-Reply-To: <1464259085-13604-1-git-send-email-maarten.lankhorst@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 List-Id: intel-gfx@lists.freedesktop.org V2l0aCB0aGUgcmVtb3ZhbCBvZiBjcyBzdXBwb3J0IHRoaXMgaXMgbm8gbG9uZ2VyIHJlYWNoYWJs ZS4KQ2FuIGJlIHJldml2ZWQgaWYgbmVlZGVkLgoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5r aG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IFBh dHJpayBKYWtvYnNzb24gPHBhdHJpay5qYWtvYnNzb25AbGludXguaW50ZWwuY29tPgotLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAgNSAtCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAyNTkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjY0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCmluZGV4IGNlMWQzNjhlNGU1MC4uODVhN2M0NGVkNTVjIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKQEAgLTYxOCwxMSArNjE4LDYgQEAgc3RydWN0IGRybV9pOTE1X2Rpc3BsYXlf ZnVuY3MgewogCXZvaWQgKCphdWRpb19jb2RlY19kaXNhYmxlKShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2Rlcik7CiAJdm9pZCAoKmZkaV9saW5rX3RyYWluKShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpOwogCXZvaWQgKCppbml0X2Nsb2NrX2dhdGluZykoc3RydWN0IGRybV9kZXZpY2UgKmRldik7 Ci0JaW50ICgqcXVldWVfZmxpcCkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9j cnRjICpjcnRjLAotCQkJICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKLQkJCSAgc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsCi0JCQkgIHVpbnQ2NF90IGd0dF9vZmZzZXQpOwogCXZvaWQgKCpocGRfaXJxX3Nl dHVwKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogCS8qIGNsb2NrIHVwZGF0 ZXMgZm9yIG1vZGUgc2V0ICovCiAJLyogY3Vyc29yIHVwZGF0ZXMgKi8KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwppbmRleCAyMzI0Yjc0ZjcyZjQuLmQwNjUzZjg3YTUzYSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTEwNzEsMjM3ICsxMTA3MSw2IEBAIHZv aWQgaW50ZWxfZmluaXNoX3BhZ2VfZmxpcF9tbWlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgaW50IHBpcGUpCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9s b2NrLCBmbGFncyk7CiB9CiAKLXN0YXRpYyBpbnQgaW50ZWxfZ2VuMl9xdWV1ZV9mbGlwKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCi0JCQkJIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKLQkJCQkgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCi0JCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmosCi0JCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAotCQkJCSB1aW50 NjRfdCBndHRfb2Zmc2V0KQotewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJl cS0+ZW5naW5lOwotCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjKTsKLQl1MzIgZmxpcF9tYXNrOwotCWludCByZXQ7Ci0KLQlyZXQgPSBpbnRlbF9yaW5n X2JlZ2luKHJlcSwgNik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCS8qIENhbid0IHF1 ZXVlIG11bHRpcGxlIGZsaXBzLCBzbyB3YWl0IGZvciB0aGUgcHJldmlvdXMKLQkgKiBvbmUgdG8g ZmluaXNoIGJlZm9yZSBleGVjdXRpbmcgdGhlIG5leHQuCi0JICovCi0JaWYgKGludGVsX2NydGMt PnBsYW5lKQotCQlmbGlwX21hc2sgPSBNSV9XQUlUX0ZPUl9QTEFORV9CX0ZMSVA7Ci0JZWxzZQot CQlmbGlwX21hc2sgPSBNSV9XQUlUX0ZPUl9QTEFORV9BX0ZMSVA7Ci0JaW50ZWxfcmluZ19lbWl0 KGVuZ2luZSwgTUlfV0FJVF9GT1JfRVZFTlQgfCBmbGlwX21hc2spOwotCWludGVsX3JpbmdfZW1p dChlbmdpbmUsIE1JX05PT1ApOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0RJU1BMQVlf RkxJUCB8Ci0JCQlNSV9ESVNQTEFZX0ZMSVBfUExBTkUoaW50ZWxfY3J0Yy0+cGxhbmUpKTsKLQlp bnRlbF9yaW5nX2VtaXQoZW5naW5lLCBmYi0+cGl0Y2hlc1swXSk7Ci0JaW50ZWxfcmluZ19lbWl0 KGVuZ2luZSwgZ3R0X29mZnNldCk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7IC8qIGF1 eCBkaXNwbGF5IGJhc2UgYWRkcmVzcywgdW51c2VkICovCi0KLQlyZXR1cm4gMDsKLX0KLQotc3Rh dGljIGludCBpbnRlbF9nZW4zX3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJ CQkgc3RydWN0IGRybV9jcnRjICpjcnRjLAotCQkJCSBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiwKLQkJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJCQkgc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCi0JCQkJIHVpbnQ2NF90IGd0dF9vZmZzZXQpCi17Ci0J c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Ci0Jc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwotCXUzMiBmbGlwX21h c2s7Ci0JaW50IHJldDsKLQotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA2KTsKLQlpZiAo cmV0KQotCQlyZXR1cm4gcmV0OwotCi0JaWYgKGludGVsX2NydGMtPnBsYW5lKQotCQlmbGlwX21h c2sgPSBNSV9XQUlUX0ZPUl9QTEFORV9CX0ZMSVA7Ci0JZWxzZQotCQlmbGlwX21hc2sgPSBNSV9X QUlUX0ZPUl9QTEFORV9BX0ZMSVA7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfV0FJVF9G T1JfRVZFTlQgfCBmbGlwX21hc2spOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1Ap OwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX0RJU1BMQVlfRkxJUF9JOTE1IHwKLQkJCU1J X0RJU1BMQVlfRkxJUF9QTEFORShpbnRlbF9jcnRjLT5wbGFuZSkpOwotCWludGVsX3JpbmdfZW1p dChlbmdpbmUsIGZiLT5waXRjaGVzWzBdKTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBndHRf b2Zmc2V0KTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9OT09QKTsKLQotCXJldHVybiAw OwotfQotCi1zdGF0aWMgaW50IGludGVsX2dlbjRfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAotCQkJCSBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCi0JCQkJIHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiLAotCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAotCQkJ CSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKLQkJCQkgdWludDY0X3QgZ3R0X29m ZnNldCkKLXsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsK LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwot CXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLQl1 aW50MzJfdCBwZiwgcGlwZXNyYzsKLQlpbnQgcmV0OwotCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdp bihyZXEsIDQpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQkvKiBpOTY1KyB1c2VzIHRo ZSBsaW5lYXIgb3IgdGlsZWQgb2Zmc2V0cyBmcm9tIHRoZQotCSAqIERpc3BsYXkgUmVnaXN0ZXJz ICh3aGljaCBkbyBub3QgY2hhbmdlIGFjcm9zcyBhIHBhZ2UtZmxpcCkKLQkgKiBzbyB3ZSBuZWVk IG9ubHkgcmVwcm9ncmFtIHRoZSBiYXNlIGFkZHJlc3MuCi0JICovCi0JaW50ZWxfcmluZ19lbWl0 KGVuZ2luZSwgTUlfRElTUExBWV9GTElQIHwKLQkJCU1JX0RJU1BMQVlfRkxJUF9QTEFORShpbnRl bF9jcnRjLT5wbGFuZSkpOwotCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGZiLT5waXRjaGVzWzBd KTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBndHRfb2Zmc2V0IHwgb2JqLT50aWxpbmdfbW9k ZSk7Ci0KLQkvKiBYWFggRW5hYmxpbmcgdGhlIHBhbmVsLWZpdHRlciBhY3Jvc3MgcGFnZS1mbGlw IGlzIHNvIGZhcgotCSAqIHVudGVzdGVkIG9uIG5vbi1uYXRpdmUgbW9kZXMsIHNvIGlnbm9yZSBp dCBmb3Igbm93LgotCSAqIHBmID0gSTkxNV9SRUFEKHBpcGUgPT0gMCA/IFBGQV9DVExfMSA6IFBG Ql9DVExfMSkgJiBQRl9FTkFCTEU7Ci0JICovCi0JcGYgPSAwOwotCXBpcGVzcmMgPSBJOTE1X1JF QUQoUElQRVNSQyhpbnRlbF9jcnRjLT5waXBlKSkgJiAweDBmZmYwZmZmOwotCWludGVsX3Jpbmdf ZW1pdChlbmdpbmUsIHBmIHwgcGlwZXNyYyk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGlu dCBpbnRlbF9nZW42X3F1ZXVlX2ZsaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJCQkgc3Ry dWN0IGRybV9jcnRjICpjcnRjLAotCQkJCSBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKLQkJ CQkgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKLQkJCQkgc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsCi0JCQkJIHVpbnQ2NF90IGd0dF9vZmZzZXQpCi17Ci0Jc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Ci0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0JdWludDMyX3QgcGYsIHBpcGVz cmM7Ci0JaW50IHJldDsKLQotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKLQlpZiAo cmV0KQotCQlyZXR1cm4gcmV0OwotCi0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfRElTUExB WV9GTElQIHwKLQkJCU1JX0RJU1BMQVlfRkxJUF9QTEFORShpbnRlbF9jcnRjLT5wbGFuZSkpOwot CWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGZiLT5waXRjaGVzWzBdIHwgb2JqLT50aWxpbmdfbW9k ZSk7Ci0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgZ3R0X29mZnNldCk7Ci0KLQkvKiBDb250cmFy eSB0byB0aGUgc3VnZ2VzdGlvbnMgaW4gdGhlIGRvY3VtZW50YXRpb24sCi0JICogIkVuYWJsZSBQ YW5lbCBGaXR0ZXIiIGRvZXMgbm90IHNlZW0gdG8gYmUgcmVxdWlyZWQgd2hlbiBwYWdlCi0JICog ZmxpcHBpbmcgd2l0aCBhIG5vbi1uYXRpdmUgbW9kZSwgYW5kIHdvcnNlIGNhdXNlcyBhIG5vcm1h bAotCSAqIG1vZGVzZXQgdG8gZmFpbC4KLQkgKiBwZiA9IEk5MTVfUkVBRChQRl9DVEwoaW50ZWxf Y3J0Yy0+cGlwZSkpICYgUEZfRU5BQkxFOwotCSAqLwotCXBmID0gMDsKLQlwaXBlc3JjID0gSTkx NV9SRUFEKFBJUEVTUkMoaW50ZWxfY3J0Yy0+cGlwZSkpICYgMHgwZmZmMGZmZjsKLQlpbnRlbF9y aW5nX2VtaXQoZW5naW5lLCBwZiB8IHBpcGVzcmMpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRp YyBpbnQgaW50ZWxfZ2VuN19xdWV1ZV9mbGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkJ IHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKLQkJCQkgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIs Ci0JCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCi0JCQkJIHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxLAotCQkJCSB1aW50NjRfdCBndHRfb2Zmc2V0KQotewotCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwotCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLQl1aW50MzJfdCBwbGFu ZV9iaXQgPSAwOwotCWludCBsZW4sIHJldDsKLQotCXN3aXRjaCAoaW50ZWxfY3J0Yy0+cGxhbmUp IHsKLQljYXNlIFBMQU5FX0E6Ci0JCXBsYW5lX2JpdCA9IE1JX0RJU1BMQVlfRkxJUF9JVkJfUExB TkVfQTsKLQkJYnJlYWs7Ci0JY2FzZSBQTEFORV9COgotCQlwbGFuZV9iaXQgPSBNSV9ESVNQTEFZ X0ZMSVBfSVZCX1BMQU5FX0I7Ci0JCWJyZWFrOwotCWNhc2UgUExBTkVfQzoKLQkJcGxhbmVfYml0 ID0gTUlfRElTUExBWV9GTElQX0lWQl9QTEFORV9DOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlX QVJOX09OQ0UoMSwgInVua25vd24gcGxhbmUgaW4gZmxpcCBjb21tYW5kXG4iKTsKLQkJcmV0dXJu IC1FTk9ERVY7Ci0JfQotCi0JbGVuID0gNDsKLQlpZiAoZW5naW5lLT5pZCA9PSBSQ1MpIHsKLQkJ bGVuICs9IDY7Ci0JCS8qCi0JCSAqIE9uIEdlbiA4LCBTUk0gaXMgbm93IHRha2luZyBhbiBleHRy YSBkd29yZCB0byBhY2NvbW1vZGF0ZQotCQkgKiA0OGJpdHMgYWRkcmVzc2VzLCBhbmQgd2UgbmVl ZCBhIE5PT1AgZm9yIHRoZSBiYXRjaCBzaXplIHRvCi0JCSAqIHN0YXkgZXZlbi4KLQkJICovCi0J CWlmIChJU19HRU44KGRldikpCi0JCQlsZW4gKz0gMjsKLQl9Ci0KLQkvKgotCSAqIEJTcGVjIE1J X0RJU1BMQVlfRkxJUCBmb3IgSVZCOgotCSAqICJUaGUgZnVsbCBwYWNrZXQgbXVzdCBiZSBjb250 YWluZWQgd2l0aGluIHRoZSBzYW1lIGNhY2hlIGxpbmUuIgotCSAqCi0JICogQ3VycmVudGx5IHRo ZSBMUkkrU1JNK01JX0RJU1BMQVlfRkxJUCBhbGwgZml0IHdpdGhpbiB0aGUgc2FtZQotCSAqIGNh Y2hlbGluZSwgaWYgd2UgZXZlciBzdGFydCBlbWl0dGluZyBtb3JlIGNvbW1hbmRzIGJlZm9yZQot CSAqIHRoZSBNSV9ESVNQTEFZX0ZMSVAgd2UgbWF5IG5lZWQgdG8gZmlyc3QgZW1pdCBldmVyeXRo aW5nIGVsc2UsCi0JICogdGhlbiBkbyB0aGUgY2FjaGVsaW5lIGFsaWdubWVudCwgYW5kIGZpbmFs bHkgZW1pdCB0aGUKLQkgKiBNSV9ESVNQTEFZX0ZMSVAuCi0JICovCi0JcmV0ID0gaW50ZWxfcmlu Z19jYWNoZWxpbmVfYWxpZ24ocmVxKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0 ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIGxlbik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsK LQotCS8qIFVubWFzayB0aGUgZmxpcC1kb25lIGNvbXBsZXRpb24gbWVzc2FnZS4gTm90ZSB0aGF0 IHRoZSBic3BlYyBzYXlzIHRoYXQKLQkgKiB3ZSBzaG91bGQgZG8gdGhpcyBmb3IgYm90aCB0aGUg QkNTIGFuZCBSQ1MsIGFuZCB0aGF0IHdlIG11c3Qgbm90IHVubWFzawotCSAqIG1vcmUgdGhhbiBv bmUgZmxpcCBldmVudCBhdCBhbnkgdGltZSAob3IgZW5zdXJlIHRoYXQgb25lIGZsaXAgbWVzc2Fn ZQotCSAqIGNhbiBiZSBzZW50IGJ5IHdhaXRpbmcgZm9yIGZsaXAtZG9uZSBwcmlvciB0byBxdWV1 ZWluZyBuZXcgZmxpcHMpLgotCSAqIEV4cGVyaW1lbnRhdGlvbiBzYXlzIHRoYXQgQkNTIHdvcmtz IGRlc3BpdGUgREVSUk1SIG1hc2tpbmcgYWxsCi0JICogZmxpcC1kb25lIGNvbXBsZXRpb24gZXZl bnRzIGFuZCB0aGF0IHVubWFza2luZyBhbGwgcGxhbmVzIGF0IG9uY2UKLQkgKiBmb3IgdGhlIFJD UyBhbHNvIGRvZXNuJ3QgYXBwZWFyIHRvIGRyb3AgZXZlbnRzLiBTZXR0aW5nIHRoZSBERVJSTVIK LQkgKiB0byB6ZXJvIGRvZXMgbGVhZCB0byBsb2NrdXBzIHdpdGhpbiBNSV9ESVNQTEFZX0ZMSVAu Ci0JICovCi0JaWYgKGVuZ2luZS0+aWQgPT0gUkNTKSB7Ci0JCWludGVsX3JpbmdfZW1pdChlbmdp bmUsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsKLQkJaW50ZWxfcmluZ19lbWl0X3JlZyhlbmdp bmUsIERFUlJNUik7Ci0JCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIH4oREVSUk1SX1BJUEVBX1BS SV9GTElQX0RPTkUgfAotCQkJCQkgIERFUlJNUl9QSVBFQl9QUklfRkxJUF9ET05FIHwKLQkJCQkJ ICBERVJSTVJfUElQRUNfUFJJX0ZMSVBfRE9ORSkpOwotCQlpZiAoSVNfR0VOOChkZXYpKQotCQkJ aW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfU1RPUkVfUkVHSVNURVJfTUVNX0dFTjggfAotCQkJ CQkgICAgICBNSV9TUk1fTFJNX0dMT0JBTF9HVFQpOwotCQllbHNlCi0JCQlpbnRlbF9yaW5nX2Vt aXQoZW5naW5lLCBNSV9TVE9SRV9SRUdJU1RFUl9NRU0gfAotCQkJCQkgICAgICBNSV9TUk1fTFJN X0dMT0JBTF9HVFQpOwotCQlpbnRlbF9yaW5nX2VtaXRfcmVnKGVuZ2luZSwgREVSUk1SKTsKLQkJ aW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgZW5naW5lLT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyNTYp OwotCQlpZiAoSVNfR0VOOChkZXYpKSB7Ci0JCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCAwKTsK LQkJCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX05PT1ApOwotCQl9Ci0JfQotCi0JaW50ZWxf cmluZ19lbWl0KGVuZ2luZSwgTUlfRElTUExBWV9GTElQX0k5MTUgfCBwbGFuZV9iaXQpOwotCWlu dGVsX3JpbmdfZW1pdChlbmdpbmUsIChmYi0+cGl0Y2hlc1swXSB8IG9iai0+dGlsaW5nX21vZGUp KTsKLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBndHRfb2Zmc2V0KTsKLQlpbnRlbF9yaW5nX2Vt aXQoZW5naW5lLCAoTUlfTk9PUCkpOwotCi0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyB2b2lkIGlu dGVsX21taW9fZmxpcF93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3KQogewogCXN0cnVj dCBpbnRlbF9mbGlwX3dvcmsgKndvcmsgPQpAQCAtMTQ4OTUsMzQgKzE0NjY0LDYgQEAgdm9pZCBp bnRlbF9pbml0X2Rpc3BsYXlfaG9va3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCQlkZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NhbGNfY2RjbGsgPQogCQkJc2tsX21vZGVz ZXRfY2FsY19jZGNsazsKIAl9Ci0KLQlzd2l0Y2ggKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4p IHsKLQljYXNlIDI6Ci0JCWRldl9wcml2LT5kaXNwbGF5LnF1ZXVlX2ZsaXAgPSBpbnRlbF9nZW4y X3F1ZXVlX2ZsaXA7Ci0JCWJyZWFrOwotCi0JY2FzZSAzOgotCQlkZXZfcHJpdi0+ZGlzcGxheS5x dWV1ZV9mbGlwID0gaW50ZWxfZ2VuM19xdWV1ZV9mbGlwOwotCQlicmVhazsKLQotCWNhc2UgNDoK LQljYXNlIDU6Ci0JCWRldl9wcml2LT5kaXNwbGF5LnF1ZXVlX2ZsaXAgPSBpbnRlbF9nZW40X3F1 ZXVlX2ZsaXA7Ci0JCWJyZWFrOwotCi0JY2FzZSA2OgotCQlkZXZfcHJpdi0+ZGlzcGxheS5xdWV1 ZV9mbGlwID0gaW50ZWxfZ2VuNl9xdWV1ZV9mbGlwOwotCQlicmVhazsKLQljYXNlIDc6Ci0JY2Fz ZSA4OiAvKiBGSVhNRShCRFcpOiBDaGVjayB0aGF0IHRoZSBnZW44IFJDUyBmbGlwIHdvcmtzLiAq LwotCQlkZXZfcHJpdi0+ZGlzcGxheS5xdWV1ZV9mbGlwID0gaW50ZWxfZ2VuN19xdWV1ZV9mbGlw OwotCQlicmVhazsKLQljYXNlIDk6Ci0JCS8qIERyb3AgdGhyb3VnaCAtIHVuc3VwcG9ydGVkIHNp bmNlIGV4ZWNsaXN0IG9ubHkuICovCi0JZGVmYXVsdDoKLQkJLyogRGVmYXVsdCBqdXN0IHJldHVy bnMgLUVOT0RFViB0byBpbmRpY2F0ZSB1bnN1cHBvcnRlZCAqLwotCQlicmVhazsKLQl9CiB9CiAK IC8qCi0tIAoyLjUuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==