From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 68532C2BA83 for ; Wed, 12 Feb 2020 16:17:56 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4388A20714 for ; Wed, 12 Feb 2020 16:17:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4388A20714 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id DF2546F543; Wed, 12 Feb 2020 16:17:55 +0000 (UTC) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 910216F542 for ; Wed, 12 Feb 2020 16:17:53 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Feb 2020 08:17:53 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,433,1574150400"; d="scan'208";a="222331582" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by orsmga007.jf.intel.com with SMTP; 12 Feb 2020 08:17:51 -0800 Received: by stinkbox (sSMTP sendmail emulation); Wed, 12 Feb 2020 18:17:50 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Date: Wed, 12 Feb 2020 18:17:34 +0200 Message-Id: <20200212161738.28141-5-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200212161738.28141-1-ville.syrjala@linux.intel.com> References: <20200212161738.28141-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v2 4/8] drm/i915: Flatten a bunch of the pfit functions X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCk1v c3Qgb2YgdGhlIHBmaXQgZnVuY3Rpb25zIGFyZSBvZiB0aGUgZm9ybToKCmZ1bmMoKQp7CglpZiAo cGZpdF9lbmFibGVkKSB7CgkJLi4uCgl9Cn0KCkZsaXAgdGhlIHBmaXRfZW5hYmxlZCBjaGVjayBh cm91bmQgdG8gZmxhdHRlbiB0aGUgZnVuY3Rpb25zLgoKQW5kIHdoaWxlIHdlJ3JlIHRvdWNoaW5n IGFsbCB0aGlzIGxldCdzIGRvIHRoZSB1c3VhbApzL3BpcGVfY29uZmlnL2NydGNfc3RhdGUvIHJl cGxhY2VtZW50LgoKU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxh QGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXkuYyB8IDIzMyArKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTE1 IGluc2VydGlvbnMoKyksIDExOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCmluZGV4IGJlY2M2MzIyYjdkYy4uNzk2ZTI3YzRhZWNl IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXku YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwpAQCAt NjIzMyw0MiArNjIzMyw0MiBAQCBzdGF0aWMgdm9pZCBza2xfcGZpdF9lbmFibGUoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJZW51bSBwaXBlIHBpcGUgPSBjcnRj LT5waXBlOwogCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3NjYWxlcl9zdGF0ZSAqc2NhbGVyX3N0 YXRlID0KIAkJJmNydGNfc3RhdGUtPnNjYWxlcl9zdGF0ZTsKKwl1MTYgdXZfcmdiX2hwaGFzZSwg dXZfcmdiX3ZwaGFzZTsKKwlpbnQgcGZpdF93LCBwZml0X2gsIGhzY2FsZSwgdnNjYWxlOworCXVu c2lnbmVkIGxvbmcgaXJxZmxhZ3M7CisJaW50IGlkOwogCi0JaWYgKGNydGNfc3RhdGUtPnBjaF9w Zml0LmVuYWJsZWQpIHsKLQkJdTE2IHV2X3JnYl9ocGhhc2UsIHV2X3JnYl92cGhhc2U7Ci0JCWlu dCBwZml0X3csIHBmaXRfaCwgaHNjYWxlLCB2c2NhbGU7Ci0JCXVuc2lnbmVkIGxvbmcgaXJxZmxh Z3M7Ci0JCWludCBpZDsKKwlpZiAoIWNydGNfc3RhdGUtPnBjaF9wZml0LmVuYWJsZWQpCisJCXJl dHVybjsKIAotCQlpZiAoV0FSTl9PTihjcnRjX3N0YXRlLT5zY2FsZXJfc3RhdGUuc2NhbGVyX2lk IDwgMCkpCi0JCQlyZXR1cm47CisJaWYgKFdBUk5fT04oY3J0Y19zdGF0ZS0+c2NhbGVyX3N0YXRl LnNjYWxlcl9pZCA8IDApKQorCQlyZXR1cm47CiAKLQkJcGZpdF93ID0gKGNydGNfc3RhdGUtPnBj aF9wZml0LnNpemUgPj4gMTYpICYgMHhGRkZGOwotCQlwZml0X2ggPSBjcnRjX3N0YXRlLT5wY2hf cGZpdC5zaXplICYgMHhGRkZGOworCXBmaXRfdyA9IChjcnRjX3N0YXRlLT5wY2hfcGZpdC5zaXpl ID4+IDE2KSAmIDB4RkZGRjsKKwlwZml0X2ggPSBjcnRjX3N0YXRlLT5wY2hfcGZpdC5zaXplICYg MHhGRkZGOwogCi0JCWhzY2FsZSA9IChjcnRjX3N0YXRlLT5waXBlX3NyY193IDw8IDE2KSAvIHBm aXRfdzsKLQkJdnNjYWxlID0gKGNydGNfc3RhdGUtPnBpcGVfc3JjX2ggPDwgMTYpIC8gcGZpdF9o OworCWhzY2FsZSA9IChjcnRjX3N0YXRlLT5waXBlX3NyY193IDw8IDE2KSAvIHBmaXRfdzsKKwl2 c2NhbGUgPSAoY3J0Y19zdGF0ZS0+cGlwZV9zcmNfaCA8PCAxNikgLyBwZml0X2g7CiAKLQkJdXZf cmdiX2hwaGFzZSA9IHNrbF9zY2FsZXJfY2FsY19waGFzZSgxLCBoc2NhbGUsIGZhbHNlKTsKLQkJ dXZfcmdiX3ZwaGFzZSA9IHNrbF9zY2FsZXJfY2FsY19waGFzZSgxLCB2c2NhbGUsIGZhbHNlKTsK Kwl1dl9yZ2JfaHBoYXNlID0gc2tsX3NjYWxlcl9jYWxjX3BoYXNlKDEsIGhzY2FsZSwgZmFsc2Up OworCXV2X3JnYl92cGhhc2UgPSBza2xfc2NhbGVyX2NhbGNfcGhhc2UoMSwgdnNjYWxlLCBmYWxz ZSk7CiAKLQkJaWQgPSBzY2FsZXJfc3RhdGUtPnNjYWxlcl9pZDsKKwlpZCA9IHNjYWxlcl9zdGF0 ZS0+c2NhbGVyX2lkOwogCi0JCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxv Y2ssIGlycWZsYWdzKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnVuY29yZS5sb2Nr LCBpcnFmbGFncyk7CiAKLQkJaW50ZWxfZGVfd3JpdGVfZncoZGV2X3ByaXYsIFNLTF9QU19DVFJM KHBpcGUsIGlkKSwgUFNfU0NBTEVSX0VOIHwKLQkJCQkgIFBTX0ZJTFRFUl9NRURJVU0gfCBzY2Fs ZXJfc3RhdGUtPnNjYWxlcnNbaWRdLm1vZGUpOwotCQlpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJp diwgU0tMX1BTX1ZQSEFTRShwaXBlLCBpZCksCi0JCQkJICBQU19ZX1BIQVNFKDApIHwgUFNfVVZf UkdCX1BIQVNFKHV2X3JnYl92cGhhc2UpKTsKLQkJaW50ZWxfZGVfd3JpdGVfZncoZGV2X3ByaXYs IFNLTF9QU19IUEhBU0UocGlwZSwgaWQpLAotCQkJCSAgUFNfWV9QSEFTRSgwKSB8IFBTX1VWX1JH Ql9QSEFTRSh1dl9yZ2JfaHBoYXNlKSk7Ci0JCWludGVsX2RlX3dyaXRlX2Z3KGRldl9wcml2LCBT S0xfUFNfV0lOX1BPUyhwaXBlLCBpZCksCi0JCQkJICBjcnRjX3N0YXRlLT5wY2hfcGZpdC5wb3Mp OwotCQlpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJpdiwgU0tMX1BTX1dJTl9TWihwaXBlLCBpZCks Ci0JCQkJICBjcnRjX3N0YXRlLT5wY2hfcGZpdC5zaXplKTsKKwlpbnRlbF9kZV93cml0ZV9mdyhk ZXZfcHJpdiwgU0tMX1BTX0NUUkwocGlwZSwgaWQpLCBQU19TQ0FMRVJfRU4gfAorCQkJICBQU19G SUxURVJfTUVESVVNIHwgc2NhbGVyX3N0YXRlLT5zY2FsZXJzW2lkXS5tb2RlKTsKKwlpbnRlbF9k ZV93cml0ZV9mdyhkZXZfcHJpdiwgU0tMX1BTX1ZQSEFTRShwaXBlLCBpZCksCisJCQkgIFBTX1lf UEhBU0UoMCkgfCBQU19VVl9SR0JfUEhBU0UodXZfcmdiX3ZwaGFzZSkpOworCWludGVsX2RlX3dy aXRlX2Z3KGRldl9wcml2LCBTS0xfUFNfSFBIQVNFKHBpcGUsIGlkKSwKKwkJCSAgUFNfWV9QSEFT RSgwKSB8IFBTX1VWX1JHQl9QSEFTRSh1dl9yZ2JfaHBoYXNlKSk7CisJaW50ZWxfZGVfd3JpdGVf ZncoZGV2X3ByaXYsIFNLTF9QU19XSU5fUE9TKHBpcGUsIGlkKSwKKwkJCSAgY3J0Y19zdGF0ZS0+ cGNoX3BmaXQucG9zKTsKKwlpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJpdiwgU0tMX1BTX1dJTl9T WihwaXBlLCBpZCksCisJCQkgIGNydGNfc3RhdGUtPnBjaF9wZml0LnNpemUpOwogCi0JCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwotCX0K KwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdz KTsKIH0KIAogc3RhdGljIHZvaWQgaWxrX3BmaXRfZW5hYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQpAQCAtNjI3NywyMiArNjI3NywyMyBAQCBzdGF0aWMgdm9p ZCBpbGtfcGZpdF9lbmFibGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5i YXNlLmRldik7CiAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwogCi0JaWYgKGNydGNfc3Rh dGUtPnBjaF9wZml0LmVuYWJsZWQpIHsKLQkJLyogRm9yY2UgdXNlIG9mIGhhcmQtY29kZWQgZmls dGVyIGNvZWZmaWNpZW50cwotCQkgKiBhcyBzb21lIHByZS1wcm9ncmFtbWVkIHZhbHVlcyBhcmUg YnJva2VuLAotCQkgKiBlLmcuIHgyMDEuCi0JCSAqLwotCQlpZiAoSVNfSVZZQlJJREdFKGRldl9w cml2KSB8fCBJU19IQVNXRUxMKGRldl9wcml2KSkKLQkJCWludGVsX2RlX3dyaXRlKGRldl9wcml2 LCBQRl9DVEwocGlwZSksCi0JCQkJICAgICAgIFBGX0VOQUJMRSB8IFBGX0ZJTFRFUl9NRURfM3gz IHwgUEZfUElQRV9TRUxfSVZCKHBpcGUpKTsKLQkJZWxzZQotCQkJaW50ZWxfZGVfd3JpdGUoZGV2 X3ByaXYsIFBGX0NUTChwaXBlKSwKLQkJCQkgICAgICAgUEZfRU5BQkxFIHwgUEZfRklMVEVSX01F RF8zeDMpOwotCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgUEZfV0lOX1BPUyhwaXBlKSwKLQkJ CSAgICAgICBjcnRjX3N0YXRlLT5wY2hfcGZpdC5wb3MpOwotCQlpbnRlbF9kZV93cml0ZShkZXZf cHJpdiwgUEZfV0lOX1NaKHBpcGUpLAotCQkJICAgICAgIGNydGNfc3RhdGUtPnBjaF9wZml0LnNp emUpOwotCX0KKwlpZiAoIWNydGNfc3RhdGUtPnBjaF9wZml0LmVuYWJsZWQpCisJCXJldHVybjsK KworCS8qIEZvcmNlIHVzZSBvZiBoYXJkLWNvZGVkIGZpbHRlciBjb2VmZmljaWVudHMKKwkgKiBh cyBzb21lIHByZS1wcm9ncmFtbWVkIHZhbHVlcyBhcmUgYnJva2VuLAorCSAqIGUuZy4geDIwMS4K KwkgKi8KKwlpZiAoSVNfSVZZQlJJREdFKGRldl9wcml2KSB8fCBJU19IQVNXRUxMKGRldl9wcml2 KSkKKwkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIFBGX0NUTChwaXBlKSwgUEZfRU5BQkxFIHwK KwkJCSAgICAgICBQRl9GSUxURVJfTUVEXzN4MyB8IFBGX1BJUEVfU0VMX0lWQihwaXBlKSk7CisJ ZWxzZQorCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgUEZfQ1RMKHBpcGUpLCBQRl9FTkFCTEUg fAorCQkJICAgICAgIFBGX0ZJTFRFUl9NRURfM3gzKTsKKwlpbnRlbF9kZV93cml0ZShkZXZfcHJp diwgUEZfV0lOX1BPUyhwaXBlKSwKKwkJICAgICAgIGNydGNfc3RhdGUtPnBjaF9wZml0LnBvcyk7 CisJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIFBGX1dJTl9TWihwaXBlKSwKKwkJICAgICAgIGNy dGNfc3RhdGUtPnBjaF9wZml0LnNpemUpOwogfQogCiB2b2lkIGhzd19lbmFibGVfaXBzKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQpAQCAtNzEwNywxMSArNzEwOCwx MiBAQCB2b2lkIGlsa19wZml0X2Rpc2FibGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg Km9sZF9jcnRjX3N0YXRlKQogCiAJLyogVG8gYXZvaWQgdXBzZXR0aW5nIHRoZSBwb3dlciB3ZWxs IG9uIGhhc3dlbGwgb25seSBkaXNhYmxlIHRoZSBwZml0IGlmCiAJICogaXQncyBpbiB1c2UuIFRo ZSBodyBzdGF0ZSBjb2RlIHdpbGwgbWFrZSBzdXJlIHdlIGdldCB0aGlzIHJpZ2h0LiAqLwotCWlm IChvbGRfY3J0Y19zdGF0ZS0+cGNoX3BmaXQuZW5hYmxlZCkgewotCQlpbnRlbF9kZV93cml0ZShk ZXZfcHJpdiwgUEZfQ1RMKHBpcGUpLCAwKTsKLQkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIFBG X1dJTl9QT1MocGlwZSksIDApOwotCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgUEZfV0lOX1Na KHBpcGUpLCAwKTsKLQl9CisJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+cGNoX3BmaXQuZW5hYmxlZCkK KwkJcmV0dXJuOworCisJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIFBGX0NUTChwaXBlKSwgMCk7 CisJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIFBGX1dJTl9QT1MocGlwZSksIDApOworCWludGVs X2RlX3dyaXRlKGRldl9wcml2LCBQRl9XSU5fU1oocGlwZSksIDApOwogfQogCiBzdGF0aWMgdm9p ZCBpbGtfY3J0Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLApAQCAt NzkyNywzOSArNzkyOSwzNSBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jcnRjX3N1cHBvcnRzX2RvdWJs ZV93aWRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCQkoY3J0Yy0+cGlwZSA9PSBQ SVBFX0EgfHwgSVNfSTkxNUcoZGV2X3ByaXYpKTsKIH0KIAotc3RhdGljIHUzMiBpbGtfcGlwZV9w aXhlbF9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKK3N0 YXRpYyB1MzIgaWxrX3BpcGVfcGl4ZWxfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKIHsKLQl1MzIgcGl4ZWxfcmF0ZTsKLQotCXBpeGVsX3JhdGUgPSBwaXBl X2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOworCXUzMiBwaXhlbF9yYXRlID0g Y3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOworCXUzMiBwZml0X3NpemUg PSBjcnRjX3N0YXRlLT5wY2hfcGZpdC5zaXplOworCXU2NCBwaXBlX3csIHBpcGVfaCwgcGZpdF93 LCBwZml0X2g7CiAKIAkvKgogCSAqIFdlIG9ubHkgdXNlIElGLUlEIGludGVybGFjaW5nLiBJZiB3 ZSBldmVyIHVzZQogCSAqIFBGLUlEIHdlJ2xsIG5lZWQgdG8gYWRqdXN0IHRoZSBwaXhlbF9yYXRl IGhlcmUuCiAJICovCiAKLQlpZiAocGlwZV9jb25maWctPnBjaF9wZml0LmVuYWJsZWQpIHsKLQkJ dTY0IHBpcGVfdywgcGlwZV9oLCBwZml0X3csIHBmaXRfaDsKLQkJdTMyIHBmaXRfc2l6ZSA9IHBp cGVfY29uZmlnLT5wY2hfcGZpdC5zaXplOwotCi0JCXBpcGVfdyA9IHBpcGVfY29uZmlnLT5waXBl X3NyY193OwotCQlwaXBlX2ggPSBwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaDsKKwlpZiAoIWNydGNf c3RhdGUtPnBjaF9wZml0LmVuYWJsZWQpCisJCXJldHVybiBwaXhlbF9yYXRlOwogCi0JCXBmaXRf dyA9IChwZml0X3NpemUgPj4gMTYpICYgMHhGRkZGOwotCQlwZml0X2ggPSBwZml0X3NpemUgJiAw eEZGRkY7Ci0JCWlmIChwaXBlX3cgPCBwZml0X3cpCi0JCQlwaXBlX3cgPSBwZml0X3c7Ci0JCWlm IChwaXBlX2ggPCBwZml0X2gpCi0JCQlwaXBlX2ggPSBwZml0X2g7CisJcGlwZV93ID0gY3J0Y19z dGF0ZS0+cGlwZV9zcmNfdzsKKwlwaXBlX2ggPSBjcnRjX3N0YXRlLT5waXBlX3NyY19oOwogCi0J CWlmIChXQVJOX09OKCFwZml0X3cgfHwgIXBmaXRfaCkpCi0JCQlyZXR1cm4gcGl4ZWxfcmF0ZTsK KwlwZml0X3cgPSAocGZpdF9zaXplID4+IDE2KSAmIDB4RkZGRjsKKwlwZml0X2ggPSBwZml0X3Np emUgJiAweEZGRkY7CisJaWYgKHBpcGVfdyA8IHBmaXRfdykKKwkJcGlwZV93ID0gcGZpdF93Owor CWlmIChwaXBlX2ggPCBwZml0X2gpCisJCXBpcGVfaCA9IHBmaXRfaDsKIAotCQlwaXhlbF9yYXRl ID0gZGl2X3U2NChtdWxfdTMyX3UzMihwaXhlbF9yYXRlLCBwaXBlX3cgKiBwaXBlX2gpLAotCQkJ CSAgICAgcGZpdF93ICogcGZpdF9oKTsKLQl9CisJaWYgKFdBUk5fT04oIXBmaXRfdyB8fCAhcGZp dF9oKSkKKwkJcmV0dXJuIHBpeGVsX3JhdGU7CiAKLQlyZXR1cm4gcGl4ZWxfcmF0ZTsKKwlyZXR1 cm4gZGl2X3U2NChtdWxfdTMyX3UzMihwaXhlbF9yYXRlLCBwaXBlX3cgKiBwaXBlX2gpLAorCQkg ICAgICAgcGZpdF93ICogcGZpdF9oKTsKIH0KIAogc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19jb21w dXRlX3BpeGVsX3JhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCkBAIC05 MTUzLDkgKzkxNTEsOSBAQCBzdGF0aWMgYm9vbCBpOXh4X2hhc19wZml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIAkJSVNfUElORVZJRVcoZGV2X3ByaXYpIHx8IElTX01PQklM RShkZXZfcHJpdik7CiB9CiAKLXN0YXRpYyB2b2lkIGk5eHhfZ2V0X3BmaXRfY29uZmlnKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAotCQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcpCitzdGF0aWMgdm9pZCBpOXh4X2dldF9wZml0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKIAl1MzIgdG1wOwogCkBAIC05 MTc1LDkgKzkxNzMsOSBAQCBzdGF0aWMgdm9pZCBpOXh4X2dldF9wZml0X2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKIAkJCXJldHVybjsKIAl9CiAKLQlwaXBlX2NvbmZpZy0+Z21jaF9w Zml0LmNvbnRyb2wgPSB0bXA7Ci0JcGlwZV9jb25maWctPmdtY2hfcGZpdC5wZ21fcmF0aW9zID0g aW50ZWxfZGVfcmVhZChkZXZfcHJpdiwKLQkJCQkJCQkgIFBGSVRfUEdNX1JBVElPUyk7CisJY3J0 Y19zdGF0ZS0+Z21jaF9wZml0LmNvbnRyb2wgPSB0bXA7CisJY3J0Y19zdGF0ZS0+Z21jaF9wZml0 LnBnbV9yYXRpb3MgPQorCQlpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBQRklUX1BHTV9SQVRJT1Mp OwogfQogCiBzdGF0aWMgdm9pZCB2bHZfY3J0Y19jbG9ja19nZXQoc3RydWN0IGludGVsX2NydGMg KmNydGMsCkBAIC05NDI3LDcgKzk0MjUsNyBAQCBzdGF0aWMgYm9vbCBpOXh4X2dldF9waXBlX2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAlpbnRlbF9nZXRfcGlwZV90aW1pbmdzKGNy dGMsIHBpcGVfY29uZmlnKTsKIAlpbnRlbF9nZXRfcGlwZV9zcmNfc2l6ZShjcnRjLCBwaXBlX2Nv bmZpZyk7CiAKLQlpOXh4X2dldF9wZml0X2NvbmZpZyhjcnRjLCBwaXBlX2NvbmZpZyk7CisJaTl4 eF9nZXRfcGZpdF9jb25maWcocGlwZV9jb25maWcpOwogCiAJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gNCkgewogCQkvKiBObyB3YXkgdG8gcmVhZCBpdCBvdXQgb24gcGlwZXMgQiBhbmQgQyAq LwpAQCAtMTAzOTMsMzcgKzEwMzkxLDM3IEBAIHN0YXRpYyB2b2lkIGlsa19nZXRfZmRpX21fbl9j b25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCQkJICAgICAmcGlwZV9jb25maWctPmZk aV9tX24sIE5VTEwpOwogfQogCi1zdGF0aWMgdm9pZCBza2xfZ2V0X3BmaXRfY29uZmlnKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAotCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZykKK3N0YXRpYyB2b2lkIHNrbF9nZXRfcGZpdF9jb25maWcoc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJh c2UuZGV2OwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zY2FsZXJfc3RhdGUgKnNjYWxlcl9zdGF0ZSA9ICZwaXBl X2NvbmZpZy0+c2NhbGVyX3N0YXRlOwotCXUzMiBwc19jdHJsID0gMDsKKwlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsK KwlzdHJ1Y3QgaW50ZWxfY3J0Y19zY2FsZXJfc3RhdGUgKnNjYWxlcl9zdGF0ZSA9ICZjcnRjX3N0 YXRlLT5zY2FsZXJfc3RhdGU7CiAJaW50IGlkID0gLTE7CiAJaW50IGk7CiAKIAkvKiBmaW5kIHNj YWxlciBhdHRhY2hlZCB0byB0aGlzIHBpcGUgKi8KIAlmb3IgKGkgPSAwOyBpIDwgY3J0Yy0+bnVt X3NjYWxlcnM7IGkrKykgewotCQlwc19jdHJsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgU0tM X1BTX0NUUkwoY3J0Yy0+cGlwZSwgaSkpOwotCQlpZiAocHNfY3RybCAmIFBTX1NDQUxFUl9FTiAm JiAhKHBzX2N0cmwgJiBQU19QTEFORV9TRUxfTUFTSykpIHsKLQkJCWlkID0gaTsKLQkJCXBpcGVf Y29uZmlnLT5wY2hfcGZpdC5lbmFibGVkID0gdHJ1ZTsKLQkJCXBpcGVfY29uZmlnLT5wY2hfcGZp dC5wb3MgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAotCQkJCQkJCQkgIFNLTF9QU19XSU5fUE9T KGNydGMtPnBpcGUsIGkpKTsKLQkJCXBpcGVfY29uZmlnLT5wY2hfcGZpdC5zaXplID0gaW50ZWxf ZGVfcmVhZChkZXZfcHJpdiwKLQkJCQkJCQkJICAgU0tMX1BTX1dJTl9TWihjcnRjLT5waXBlLCBp KSk7Ci0JCQlzY2FsZXJfc3RhdGUtPnNjYWxlcnNbaV0uaW5fdXNlID0gdHJ1ZTsKLQkJCWJyZWFr OwotCQl9CisJCXUzMiB0bXA7CisKKwkJdG1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgU0tM X1BTX0NUUkwoY3J0Yy0+cGlwZSwgaSkpOworCQlpZiAoKHRtcCAmIChQU19TQ0FMRVJfRU4gfCBQ U19QTEFORV9TRUxfTUFTSykpICE9IFBTX1NDQUxFUl9FTikKKwkJCWNvbnRpbnVlOworCisJCWlk ID0gaTsKKwkJY3J0Y19zdGF0ZS0+cGNoX3BmaXQuZW5hYmxlZCA9IHRydWU7CisJCWNydGNfc3Rh dGUtPnBjaF9wZml0LnBvcyA9CisJCQlpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBTS0xfUFNfV0lO X1BPUyhjcnRjLT5waXBlLCBpKSk7CisJCWNydGNfc3RhdGUtPnBjaF9wZml0LnNpemUgPQorCQkJ aW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgU0tMX1BTX1dJTl9TWihjcnRjLT5waXBlLCBpKSk7CisJ CXNjYWxlcl9zdGF0ZS0+c2NhbGVyc1tpXS5pbl91c2UgPSB0cnVlOworCQlicmVhazsKIAl9CiAK IAlzY2FsZXJfc3RhdGUtPnNjYWxlcl9pZCA9IGlkOwotCWlmIChpZCA+PSAwKSB7CisJaWYgKGlk ID49IDApCiAJCXNjYWxlcl9zdGF0ZS0+c2NhbGVyX3VzZXJzIHw9ICgxIDw8IFNLTF9DUlRDX0lO REVYKTsKLQl9IGVsc2UgeworCWVsc2UKIAkJc2NhbGVyX3N0YXRlLT5zY2FsZXJfdXNlcnMgJj0g figxIDw8IFNLTF9DUlRDX0lOREVYKTsKLQl9CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xMDU1OSwz MCArMTA1NTcsMjkgQEAgc2tsX2dldF9pbml0aWFsX3BsYW5lX2NvbmZpZyhzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YywKIAlrZnJlZShpbnRlbF9mYik7CiB9CiAKLXN0YXRpYyB2b2lkIGlsa19nZXRf cGZpdF9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCi0JCQkJc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKnBpcGVfY29uZmlnKQorc3RhdGljIHZvaWQgaWxrX2dldF9wZml0X2NvbmZpZyhz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIHsKLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwogCXUzMiB0bXA7CiAKIAl0bXAgPSBp bnRlbF9kZV9yZWFkKGRldl9wcml2LCBQRl9DVEwoY3J0Yy0+cGlwZSkpOworCWlmICgodG1wICYg UEZfRU5BQkxFKSA9PSAwKQorCQlyZXR1cm47CiAKLQlpZiAodG1wICYgUEZfRU5BQkxFKSB7Ci0J CXBpcGVfY29uZmlnLT5wY2hfcGZpdC5lbmFibGVkID0gdHJ1ZTsKLQkJcGlwZV9jb25maWctPnBj aF9wZml0LnBvcyA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsCi0JCQkJCQkJICBQRl9XSU5fUE9T KGNydGMtPnBpcGUpKTsKLQkJcGlwZV9jb25maWctPnBjaF9wZml0LnNpemUgPSBpbnRlbF9kZV9y ZWFkKGRldl9wcml2LAotCQkJCQkJCSAgIFBGX1dJTl9TWihjcnRjLT5waXBlKSk7Ci0KLQkJLyog V2UgY3VycmVudGx5IGRvIG5vdCBmcmVlIGFzc2lnbmVtZW50cyBvZiBwYW5lbCBmaXR0ZXJzIG9u Ci0JCSAqIGl2Yi9oc3cgKHNpbmNlIHdlIGRvbid0IHVzZSB0aGUgaGlnaGVyIHVwc2NhbGluZyBt b2RlcyB3aGljaAotCQkgKiBkaWZmZXJlbnRpYXRlcyB0aGVtKSBzbyBqdXN0IFdBUk4gYWJvdXQg dGhpcyBjYXNlIGZvciBub3cuICovCi0JCWlmIChJU19HRU4oZGV2X3ByaXYsIDcpKSB7Ci0JCQlX QVJOX09OKCh0bXAgJiBQRl9QSVBFX1NFTF9NQVNLX0lWQikgIT0KLQkJCQlQRl9QSVBFX1NFTF9J VkIoY3J0Yy0+cGlwZSkpOwotCQl9Ci0JfQorCWNydGNfc3RhdGUtPnBjaF9wZml0LmVuYWJsZWQg PSB0cnVlOworCWNydGNfc3RhdGUtPnBjaF9wZml0LnBvcyA9CisJCWludGVsX2RlX3JlYWQoZGV2 X3ByaXYsIFBGX1dJTl9QT1MoY3J0Yy0+cGlwZSkpOworCWNydGNfc3RhdGUtPnBjaF9wZml0LnNp emUgPQorCQlpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBQRl9XSU5fU1ooY3J0Yy0+cGlwZSkpOwor CisJLyoKKwkgKiBXZSBjdXJyZW50bHkgZG8gbm90IGZyZWUgYXNzaWduZW1lbnRzIG9mIHBhbmVs IGZpdHRlcnMgb24KKwkgKiBpdmIvaHN3IChzaW5jZSB3ZSBkb24ndCB1c2UgdGhlIGhpZ2hlciB1 cHNjYWxpbmcgbW9kZXMgd2hpY2gKKwkgKiBkaWZmZXJlbnRpYXRlcyB0aGVtKSBzbyBqdXN0IFdB Uk4gYWJvdXQgdGhpcyBjYXNlIGZvciBub3cuCisJICovCisJV0FSTl9PTihJU19HRU4oZGV2X3By aXYsIDcpICYmCisJCSh0bXAgJiBQRl9QSVBFX1NFTF9NQVNLX0lWQikgIT0gUEZfUElQRV9TRUxf SVZCKGNydGMtPnBpcGUpKTsKIH0KIAogc3RhdGljIGJvb2wgaWxrX2dldF9waXBlX2NvbmZpZyhz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKQEAgLTEwNjk0LDcgKzEwNjkxLDcgQEAgc3RhdGljIGJv b2wgaWxrX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAlpbnRlbF9n ZXRfcGlwZV90aW1pbmdzKGNydGMsIHBpcGVfY29uZmlnKTsKIAlpbnRlbF9nZXRfcGlwZV9zcmNf c2l6ZShjcnRjLCBwaXBlX2NvbmZpZyk7CiAKLQlpbGtfZ2V0X3BmaXRfY29uZmlnKGNydGMsIHBp cGVfY29uZmlnKTsKKwlpbGtfZ2V0X3BmaXRfY29uZmlnKHBpcGVfY29uZmlnKTsKIAogCXJldCA9 IHRydWU7CiAKQEAgLTExMjE5LDkgKzExMjE2LDkgQEAgc3RhdGljIGJvb2wgaHN3X2dldF9waXBl X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJcG93ZXJfZG9tYWluX21hc2sgfD0g QklUX1VMTChwb3dlcl9kb21haW4pOwogCiAJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkp Ci0JCQlza2xfZ2V0X3BmaXRfY29uZmlnKGNydGMsIHBpcGVfY29uZmlnKTsKKwkJCXNrbF9nZXRf cGZpdF9jb25maWcocGlwZV9jb25maWcpOwogCQllbHNlCi0JCQlpbGtfZ2V0X3BmaXRfY29uZmln KGNydGMsIHBpcGVfY29uZmlnKTsKKwkJCWlsa19nZXRfcGZpdF9jb25maWcocGlwZV9jb25maWcp OwogCX0KIAogCWlmIChoc3dfY3J0Y19zdXBwb3J0c19pcHMoY3J0YykpIHsKLS0gCjIuMjQuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==