From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville Syrjala Subject: [PATCH 01/12] drm/i915: Store all wm memory latency values in .1 usec units Date: Wed, 10 Oct 2018 16:04:43 +0300 Message-ID: <20181010130454.28557-2-ville.syrjala@linux.intel.com> References: <20181010130454.28557-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9757589DB4 for ; Wed, 10 Oct 2018 13:07:19 +0000 (UTC) In-Reply-To: <20181010130454.28557-1-ville.syrjala@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 RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCklu IG9yZGVyIHRvIHNpbXBsaWZ5IHRoZSBjb2RlIGxldCdzIHN0b3JlIGFsbCBtZW1vcnkgbGF0ZW5j eSB2YWx1ZXMgaW4KMC4xIHVzZWMgdW5pdHMuIFRoaXMgbGltaXRzIHRoZSBwbGF0Zm9ybSBzcGVj aWZpYyB1bml0cyB0byB0aGUgaW5pdGlhbApzZXR1cCBjb2RlIGZvciB0aGUgbW9zdCBwYXJ0LgoK U2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVs LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyB8ICAxMiAtLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgIHwgIDE0ICstLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgfCAxNDkgKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCA4OCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IDAwYzU1MWQzZTQwOS4uOWUwY2I5 OTU4MDFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMzgwNywxOCArMzgw Nyw2IEBAIHN0YXRpYyB2b2lkIHdtX2xhdGVuY3lfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNv bnN0IHVpbnQxNl90IHdtWzhdKQogCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8IG51bV9sZXZlbHM7 IGxldmVsKyspIHsKIAkJdW5zaWduZWQgaW50IGxhdGVuY3kgPSB3bVtsZXZlbF07CiAKLQkJLyoK LQkJICogLSBXTTErIGxhdGVuY3kgdmFsdWVzIGluIDAuNXVzIHVuaXRzCi0JCSAqIC0gbGF0ZW5j aWVzIGFyZSBpbiB1cyBvbiBnZW45L3Zsdi9jaHYKLQkJICovCi0JCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkgfHwKLQkJICAgIElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8Ci0JCSAgICBJ U19DSEVSUllWSUVXKGRldl9wcml2KSB8fAotCQkgICAgSVNfRzRYKGRldl9wcml2KSkKLQkJCWxh dGVuY3kgKj0gMTA7Ci0JCWVsc2UgaWYgKGxldmVsID4gMCkKLQkJCWxhdGVuY3kgKj0gNTsKLQog CQlzZXFfcHJpbnRmKG0sICJXTSVkICV1ICgldS4ldSB1c2VjKVxuIiwKIAkJCSAgIGxldmVsLCB3 bVtsZXZlbF0sIGxhdGVuY3kgLyAxMCwgbGF0ZW5jeSAlIDEwKTsKIAl9CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAppbmRleCA3OTRhOGEwM2M3ZTYuLmU1N2I4Y2I4ZmE0ZCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCkBAIC0xOTA2LDIyICsxOTA2LDEwIEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRl IHsKIAl9IHNhZ3Zfc3RhdHVzOwogCiAJc3RydWN0IHsKLQkJLyoKLQkJICogUmF3IHdhdGVybWFy ayBsYXRlbmN5IHZhbHVlczoKLQkJICogaW4gMC4xdXMgdW5pdHMgZm9yIFdNMCwKLQkJICogaW4g MC41dXMgdW5pdHMgZm9yIFdNMSsuCi0JCSAqLwotCQkvKiBwcmltYXJ5ICovCisJCS8qIFdhdGVy bWFyayBtZW1vcnkgbGF0ZW5jeSB2YWx1ZXMgaW4gMC4xIHVzIHVuaXRzICovCiAJCXVpbnQxNl90 IHByaV9sYXRlbmN5WzVdOwotCQkvKiBzcHJpdGUgKi8KIAkJdWludDE2X3Qgc3ByX2xhdGVuY3lb NV07Ci0JCS8qIGN1cnNvciAqLwogCQl1aW50MTZfdCBjdXJfbGF0ZW5jeVs1XTsKLQkJLyoKLQkJ ICogUmF3IHdhdGVybWFyayBtZW1vcnkgbGF0ZW5jeSB2YWx1ZXMKLQkJICogZm9yIFNLTCBmb3Ig YWxsIDggbGV2ZWxzCi0JCSAqIGluIDF1cyB1bml0cy4KLQkJICovCiAJCXVpbnQxNl90IHNrbF9s YXRlbmN5WzhdOwogCiAJCS8qIGN1cnJlbnQgaGFyZHdhcmUgc3RhdGUgKi8KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jCmluZGV4IDEzOTJhYTU2YTU1YS4uZjg3MWE2ZjE1MmMzIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMKQEAgLTgwMSw2ICs4MDEsMjcgQEAgc3RhdGljIGludCBpbnRlbF93bV9udW1f bGV2ZWxzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gZGV2X3By aXYtPndtLm1heF9sZXZlbCArIDE7CiB9CiAKK3N0YXRpYyBpbnQgaW50ZWxfcGxhbmVfd21fbGF0 ZW5jeShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAorCQkJCSAgaW50IGxldmVsKQoreworCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2 KTsKKworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCisJCXJldHVybiBkZXZfcHJpdi0+ d20uc2tsX2xhdGVuY3lbbGV2ZWxdOworCisJaWYgKEhBU19HTUNIX0RJU1BMQVkoZGV2X3ByaXYp KQorCQlyZXR1cm4gZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5W2xldmVsXTsKKworCXN3aXRjaCAo cGxhbmUtPmlkKSB7CisJY2FzZSBQTEFORV9QUklNQVJZOgorCQlyZXR1cm4gZGV2X3ByaXYtPndt LnByaV9sYXRlbmN5W2xldmVsXTsKKwljYXNlIFBMQU5FX0NVUlNPUjoKKwkJcmV0dXJuIGRldl9w cml2LT53bS5jdXJfbGF0ZW5jeVtsZXZlbF07CisJZGVmYXVsdDoKKwkJcmV0dXJuIGRldl9wcml2 LT53bS5zcHJfbGF0ZW5jeVtsZXZlbF07CisJfQorfQorCiBzdGF0aWMgYm9vbCBpbnRlbF93bV9w bGFuZV92aXNpYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAog CQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7CkBA IC0xMDM5LDEwICsxMDYwLDEwIEBAIHN0YXRpYyB2b2lkIHZsdl93cml0ZV93bV92YWx1ZXMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiBzdGF0aWMgdm9pZCBnNHhfc2V0dXBf d21fbGF0ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JLyogYWxs IGxhdGVuY2llcyBpbiB1c2VjICovCi0JZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5W0c0WF9XTV9M RVZFTF9OT1JNQUxdID0gNTsKLQlkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3lbRzRYX1dNX0xFVkVM X1NSXSA9IDEyOwotCWRldl9wcml2LT53bS5wcmlfbGF0ZW5jeVtHNFhfV01fTEVWRUxfSFBMTF0g PSAzNTsKKwkvKiBhbGwgbGF0ZW5jaWVzIGluIC4xIHVzZWMgKi8KKwlkZXZfcHJpdi0+d20ucHJp X2xhdGVuY3lbRzRYX1dNX0xFVkVMX05PUk1BTF0gPSA1MDsKKwlkZXZfcHJpdi0+d20ucHJpX2xh dGVuY3lbRzRYX1dNX0xFVkVMX1NSXSA9IDEyMDsKKwlkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3lb RzRYX1dNX0xFVkVMX0hQTExdID0gMzUwOwogCiAJZGV2X3ByaXYtPndtLm1heF9sZXZlbCA9IEc0 WF9XTV9MRVZFTF9IUExMOwogfQpAQCAtMTA5Nyw3ICsxMTE4LDcgQEAgc3RhdGljIHVpbnQxNl90 IGc0eF9jb21wdXRlX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJh c2UuZGV2KTsKIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 CiAJCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7Ci0JdW5zaWduZWQgaW50IGxhdGVu Y3kgPSBkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3lbbGV2ZWxdICogMTA7CisJaW50IGxhdGVuY3kg PSBpbnRlbF9wbGFuZV93bV9sYXRlbmN5KHBsYW5lLCBsZXZlbCk7CiAJdW5zaWduZWQgaW50IGNs b2NrLCBodG90YWwsIGNwcCwgd2lkdGgsIHdtOwogCiAJaWYgKGxhdGVuY3kgPT0gMCkKQEAgLTE1 ODYsMTQgKzE2MDcsMTQgQEAgc3RhdGljIHVuc2lnbmVkIGludCB2bHZfd21fbWV0aG9kMih1bnNp Z25lZCBpbnQgcGl4ZWxfcmF0ZSwKIAogc3RhdGljIHZvaWQgdmx2X3NldHVwX3dtX2xhdGVuY3ko c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCS8qIGFsbCBsYXRlbmNpZXMg aW4gdXNlYyAqLwotCWRldl9wcml2LT53bS5wcmlfbGF0ZW5jeVtWTFZfV01fTEVWRUxfUE0yXSA9 IDM7CisJLyogYWxsIGxhdGVuY2llcyBpbiAuMSB1c2VjICovCisJZGV2X3ByaXYtPndtLnByaV9s YXRlbmN5W1ZMVl9XTV9MRVZFTF9QTTJdID0gMzA7CiAKIAlkZXZfcHJpdi0+d20ubWF4X2xldmVs ID0gVkxWX1dNX0xFVkVMX1BNMjsKIAogCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewot CQlkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3lbVkxWX1dNX0xFVkVMX1BNNV0gPSAxMjsKLQkJZGV2 X3ByaXYtPndtLnByaV9sYXRlbmN5W1ZMVl9XTV9MRVZFTF9ERFJfRFZGU10gPSAzMzsKKwkJZGV2 X3ByaXYtPndtLnByaV9sYXRlbmN5W1ZMVl9XTV9MRVZFTF9QTTVdID0gMTIwOworCQlkZXZfcHJp di0+d20ucHJpX2xhdGVuY3lbVkxWX1dNX0xFVkVMX0REUl9EVkZTXSA9IDMzMDsKIAogCQlkZXZf cHJpdi0+d20ubWF4X2xldmVsID0gVkxWX1dNX0xFVkVMX0REUl9EVkZTOwogCX0KQEAgLTE2MDQs MTIgKzE2MjUsMTIgQEAgc3RhdGljIHVpbnQxNl90IHZsdl9jb21wdXRlX3dtX2xldmVsKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJCSAgICAgaW50IGxldmVs KQogewogCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9z dGF0ZS0+YmFzZS5wbGFuZSk7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwogCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICphZGp1c3RlZF9tb2RlID0KIAkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwlp bnQgbGF0ZW5jeSA9IGludGVsX3BsYW5lX3dtX2xhdGVuY3kocGxhbmUsIGxldmVsKTsKIAl1bnNp Z25lZCBpbnQgY2xvY2ssIGh0b3RhbCwgY3BwLCB3aWR0aCwgd207CiAKLQlpZiAoZGV2X3ByaXYt PndtLnByaV9sYXRlbmN5W2xldmVsXSA9PSAwKQorCWlmIChsYXRlbmN5ID09IDApCiAJCXJldHVy biBVU0hSVF9NQVg7CiAKIAlpZiAoIWludGVsX3dtX3BsYW5lX3Zpc2libGUoY3J0Y19zdGF0ZSwg cGxhbmVfc3RhdGUpKQpAQCAtMTYyOSw4ICsxNjUwLDcgQEAgc3RhdGljIHVpbnQxNl90IHZsdl9j b21wdXRlX3dtX2xldmVsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAogCQkgKi8KIAkJd20gPSA2MzsKIAl9IGVsc2UgewotCQl3bSA9IHZsdl93bV9tZXRob2QyKGNs b2NrLCBodG90YWwsIHdpZHRoLCBjcHAsCi0JCQkJICAgIGRldl9wcml2LT53bS5wcmlfbGF0ZW5j eVtsZXZlbF0gKiAxMCk7CisJCXdtID0gdmx2X3dtX21ldGhvZDIoY2xvY2ssIGh0b3RhbCwgd2lk dGgsIGNwcCwgbGF0ZW5jeSk7CiAJfQogCiAJcmV0dXJuIG1pbl90KHVuc2lnbmVkIGludCwgd20s IFVTSFJUX01BWCk7CkBAIC0yNDgxLDE1ICsyNTAxLDEyIEBAIHN0cnVjdCBpbGtfd21fbWF4aW11 bXMgewogCXVpbnQxNl90IGZiYzsKIH07CiAKLS8qCi0gKiBGb3IgYm90aCBXTV9QSVBFIGFuZCBX TV9MUC4KLSAqIG1lbV92YWx1ZSBtdXN0IGJlIGluIDAuMXVzIHVuaXRzLgotICovCiBzdGF0aWMg dWludDMyX3QgaWxrX2NvbXB1dGVfcHJpX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjc3RhdGUsCiAJCQkJICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwc3RhdGUs Ci0JCQkJICAgdWludDMyX3QgbWVtX3ZhbHVlLAotCQkJCSAgIGJvb2wgaXNfbHApCisJCQkJICAg aW50IGxldmVsKQogeworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwc3RhdGUtPmJhc2UucGxhbmUpOworCWludCBsYXRlbmN5ID0gaW50ZWxfcGxhbmVfd21fbGF0 ZW5jeShwbGFuZSwgbGV2ZWwpOwogCXVpbnQzMl90IG1ldGhvZDEsIG1ldGhvZDI7CiAJaW50IGNw cDsKIApAQCAtMjQ5OCwyNyArMjUxNSwyNSBAQCBzdGF0aWMgdWludDMyX3QgaWxrX2NvbXB1dGVf cHJpX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAKIAljcHAgPSBw c3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+Y3BwWzBdOwogCi0JbWV0aG9kMSA9IGlsa193bV9tZXRo b2QxKGNzdGF0ZS0+cGl4ZWxfcmF0ZSwgY3BwLCBtZW1fdmFsdWUpOworCW1ldGhvZDEgPSBpbGtf d21fbWV0aG9kMShjc3RhdGUtPnBpeGVsX3JhdGUsIGNwcCwgbGF0ZW5jeSk7CiAKLQlpZiAoIWlz X2xwKQorCWlmIChsZXZlbCA9PSAwKQogCQlyZXR1cm4gbWV0aG9kMTsKIAogCW1ldGhvZDIgPSBp bGtfd21fbWV0aG9kMihjc3RhdGUtPnBpeGVsX3JhdGUsCiAJCQkJIGNzdGF0ZS0+YmFzZS5hZGp1 c3RlZF9tb2RlLmNydGNfaHRvdGFsLAogCQkJCSBkcm1fcmVjdF93aWR0aCgmcHN0YXRlLT5iYXNl LmRzdCksCi0JCQkJIGNwcCwgbWVtX3ZhbHVlKTsKKwkJCQkgY3BwLCBsYXRlbmN5KTsKIAogCXJl dHVybiBtaW4obWV0aG9kMSwgbWV0aG9kMik7CiB9CiAKLS8qCi0gKiBGb3IgYm90aCBXTV9QSVBF IGFuZCBXTV9MUC4KLSAqIG1lbV92YWx1ZSBtdXN0IGJlIGluIDAuMXVzIHVuaXRzLgotICovCiBz dGF0aWMgdWludDMyX3QgaWxrX2NvbXB1dGVfc3ByX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjc3RhdGUsCiAJCQkJICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw c3RhdGUsCi0JCQkJICAgdWludDMyX3QgbWVtX3ZhbHVlKQorCQkJCSAgIGludCBsZXZlbCkKIHsK KwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocHN0YXRlLT5iYXNl LnBsYW5lKTsKKwlpbnQgbGF0ZW5jeSA9IGludGVsX3BsYW5lX3dtX2xhdGVuY3kocGxhbmUsIGxl dmVsKTsKIAl1aW50MzJfdCBtZXRob2QxLCBtZXRob2QyOwogCWludCBjcHA7CiAKQEAgLTI1Mjcs MjIgKzI1NDIsMjAgQEAgc3RhdGljIHVpbnQzMl90IGlsa19jb21wdXRlX3Nwcl93bShjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCiAJY3BwID0gcHN0YXRlLT5iYXNlLmZi LT5mb3JtYXQtPmNwcFswXTsKIAotCW1ldGhvZDEgPSBpbGtfd21fbWV0aG9kMShjc3RhdGUtPnBp eGVsX3JhdGUsIGNwcCwgbWVtX3ZhbHVlKTsKKwltZXRob2QxID0gaWxrX3dtX21ldGhvZDEoY3N0 YXRlLT5waXhlbF9yYXRlLCBjcHAsIGxhdGVuY3kpOwogCW1ldGhvZDIgPSBpbGtfd21fbWV0aG9k Mihjc3RhdGUtPnBpeGVsX3JhdGUsCiAJCQkJIGNzdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNy dGNfaHRvdGFsLAogCQkJCSBkcm1fcmVjdF93aWR0aCgmcHN0YXRlLT5iYXNlLmRzdCksCi0JCQkJ IGNwcCwgbWVtX3ZhbHVlKTsKKwkJCQkgY3BwLCBsYXRlbmN5KTsKIAlyZXR1cm4gbWluKG1ldGhv ZDEsIG1ldGhvZDIpOwogfQogCi0vKgotICogRm9yIGJvdGggV01fUElQRSBhbmQgV01fTFAuCi0g KiBtZW1fdmFsdWUgbXVzdCBiZSBpbiAwLjF1cyB1bml0cy4KLSAqLwogc3RhdGljIHVpbnQzMl90 IGlsa19jb21wdXRlX2N1cl93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRl LAogCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcHN0YXRlLAotCQkJCSAg IHVpbnQzMl90IG1lbV92YWx1ZSkKKwkJCQkgICBpbnQgbGV2ZWwpCiB7CisJc3RydWN0IGludGVs X3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBzdGF0ZS0+YmFzZS5wbGFuZSk7CisJaW50 IGxhdGVuY3kgPSBpbnRlbF9wbGFuZV93bV9sYXRlbmN5KHBsYW5lLCBsZXZlbCk7CiAJaW50IGNw cDsKIAogCWlmICghaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjc3RhdGUsIHBzdGF0ZSkpCkBAIC0y NTUyLDcgKzI1NjUsNyBAQCBzdGF0aWMgdWludDMyX3QgaWxrX2NvbXB1dGVfY3VyX3dtKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAKIAlyZXR1cm4gaWxrX3dtX21ldGhv ZDIoY3N0YXRlLT5waXhlbF9yYXRlLAogCQkJICAgICAgY3N0YXRlLT5iYXNlLmFkanVzdGVkX21v ZGUuY3J0Y19odG90YWwsCi0JCQkgICAgICBwc3RhdGUtPmJhc2UuY3J0Y193LCBjcHAsIG1lbV92 YWx1ZSk7CisJCQkgICAgICBwc3RhdGUtPmJhc2UuY3J0Y193LCBjcHAsIGxhdGVuY3kpOwogfQog CiAvKiBPbmx5IGZvciBXTV9MUC4gKi8KQEAgLTI3NDMsMjggKzI3NTYsMTYgQEAgc3RhdGljIHZv aWQgaWxrX2NvbXB1dGVfd21fbGV2ZWwoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmN1cnN0YXRlLAog CQkJCSBzdHJ1Y3QgaW50ZWxfd21fbGV2ZWwgKnJlc3VsdCkKIHsKLQl1aW50MTZfdCBwcmlfbGF0 ZW5jeSA9IGRldl9wcml2LT53bS5wcmlfbGF0ZW5jeVtsZXZlbF07Ci0JdWludDE2X3Qgc3ByX2xh dGVuY3kgPSBkZXZfcHJpdi0+d20uc3ByX2xhdGVuY3lbbGV2ZWxdOwotCXVpbnQxNl90IGN1cl9s YXRlbmN5ID0gZGV2X3ByaXYtPndtLmN1cl9sYXRlbmN5W2xldmVsXTsKLQotCS8qIFdNMSsgbGF0 ZW5jeSB2YWx1ZXMgc3RvcmVkIGluIDAuNXVzIHVuaXRzICovCi0JaWYgKGxldmVsID4gMCkgewot CQlwcmlfbGF0ZW5jeSAqPSA1OwotCQlzcHJfbGF0ZW5jeSAqPSA1OwotCQljdXJfbGF0ZW5jeSAq PSA1OwotCX0KLQogCWlmIChwcmlzdGF0ZSkgewotCQlyZXN1bHQtPnByaV92YWwgPSBpbGtfY29t cHV0ZV9wcmlfd20oY3N0YXRlLCBwcmlzdGF0ZSwKLQkJCQkJCSAgICAgcHJpX2xhdGVuY3ksIGxl dmVsKTsKKwkJcmVzdWx0LT5wcmlfdmFsID0gaWxrX2NvbXB1dGVfcHJpX3dtKGNzdGF0ZSwgcHJp c3RhdGUsIGxldmVsKTsKIAkJcmVzdWx0LT5mYmNfdmFsID0gaWxrX2NvbXB1dGVfZmJjX3dtKGNz dGF0ZSwgcHJpc3RhdGUsIHJlc3VsdC0+cHJpX3ZhbCk7CiAJfQogCiAJaWYgKHNwcnN0YXRlKQot CQlyZXN1bHQtPnNwcl92YWwgPSBpbGtfY29tcHV0ZV9zcHJfd20oY3N0YXRlLCBzcHJzdGF0ZSwg c3ByX2xhdGVuY3kpOworCQlyZXN1bHQtPnNwcl92YWwgPSBpbGtfY29tcHV0ZV9zcHJfd20oY3N0 YXRlLCBzcHJzdGF0ZSwgbGV2ZWwpOwogCiAJaWYgKGN1cnN0YXRlKQotCQlyZXN1bHQtPmN1cl92 YWwgPSBpbGtfY29tcHV0ZV9jdXJfd20oY3N0YXRlLCBjdXJzdGF0ZSwgY3VyX2xhdGVuY3kpOwor CQlyZXN1bHQtPmN1cl92YWwgPSBpbGtfY29tcHV0ZV9jdXJfd20oY3N0YXRlLCBjdXJzdGF0ZSwg bGV2ZWwpOwogCiAJcmVzdWx0LT5lbmFibGUgPSB0cnVlOwogfQpAQCAtMjkzMCw2ICsyOTMxLDE2 IEBAIHN0YXRpYyB2b2lkIGludGVsX2ZpeHVwX2N1cl93bV9sYXRlbmN5KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKIAkJd21bMF0gPSAxMzsKIH0KIAorc3RhdGljIHZvaWQgaWxr X2ZpeHVwX3dtX2xhdGVuY3lfdW5pdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAorCQkJCSAgICAgICB1MTYgd21bNV0pCit7CisJaW50IGxldmVsLCBudW1fbGV2ZWxzID0gaWxr X3dtX21heF9sZXZlbChkZXZfcHJpdikgKyAxOworCisJLyogY29udmVydCAuNSB1c2VjIHRvIC4x IHVzZWMgdW5pdHMgKi8KKwlmb3IgKGxldmVsID0gMTsgbGV2ZWwgPCBudW1fbGV2ZWxzOyBsZXZl bCsrKQorCQl3bVtsZXZlbF0gKj0gNTsKK30KKwogaW50IGlsa193bV9tYXhfbGV2ZWwoY29uc3Qg c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCS8qIGhvdyBtYW55IFdNIGxl dmVscyBhcmUgd2UgZXhwZWN0aW5nICovCkBAIC0yOTU4LDE1ICsyOTY5LDYgQEAgc3RhdGljIHZv aWQgaW50ZWxfcHJpbnRfd21fbGF0ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAJCQljb250aW51ZTsKIAkJfQogCi0JCS8qCi0JCSAqIC0gbGF0ZW5jaWVzIGFyZSBpbiB1 cyBvbiBnZW45LgotCQkgKiAtIGJlZm9yZSB0aGVuLCBXTTErIGxhdGVuY3kgdmFsdWVzIGFyZSBp biAwLjV1cyB1bml0cwotCQkgKi8KLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKLQkJ CWxhdGVuY3kgKj0gMTA7Ci0JCWVsc2UgaWYgKGxldmVsID4gMCkKLQkJCWxhdGVuY3kgKj0gNTsK LQogCQlEUk1fREVCVUdfS01TKCIlcyBXTSVkIGxhdGVuY3kgJXUgKCV1LiV1IHVzZWMpXG4iLAog CQkJICAgICAgbmFtZSwgbGV2ZWwsIHdtW2xldmVsXSwKIAkJCSAgICAgIGxhdGVuY3kgLyAxMCwg bGF0ZW5jeSAlIDEwKTsKQEAgLTI5ODIsOCArMjk4NCwxMiBAQCBzdGF0aWMgYm9vbCBpbGtfaW5j cmVhc2Vfd21fbGF0ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCXJl dHVybiBmYWxzZTsKIAogCXdtWzBdID0gbWF4KHdtWzBdLCBtaW4pOworCisJLyogV00xKyBsYXRl bmNpZXMgbXVzdCBiZSBtdWx0aXBsZXMgb2YgLjUgdXNlYyAqLworCW1pbiA9IHJvdW5kdXAobWlu LCA1KTsKKwogCWZvciAobGV2ZWwgPSAxOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspCi0J CXdtW2xldmVsXSA9IG1heF90KHVpbnQxNl90LCB3bVtsZXZlbF0sIERJVl9ST1VORF9VUChtaW4s IDUpKTsKKwkJd21bbGV2ZWxdID0gbWF4KHdtW2xldmVsXSwgbWluKTsKIAogCXJldHVybiB0cnVl OwogfQpAQCAtMzAxMyw2ICszMDE5LDggQEAgc3RhdGljIHZvaWQgaWxrX3NldHVwX3dtX2xhdGVu Y3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCWludGVsX3JlYWRfd21f bGF0ZW5jeShkZXZfcHJpdiwgZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5KTsKIAorCWlsa19maXh1 cF93bV9sYXRlbmN5X3VuaXRzKGRldl9wcml2LCBkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3kpOwor CiAJbWVtY3B5KGRldl9wcml2LT53bS5zcHJfbGF0ZW5jeSwgZGV2X3ByaXYtPndtLnByaV9sYXRl bmN5LAogCSAgICAgICBzaXplb2YoZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5KSk7CiAJbWVtY3B5 KGRldl9wcml2LT53bS5jdXJfbGF0ZW5jeSwgZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5LApAQCAt MzAyOSw5ICszMDM3LDIyIEBAIHN0YXRpYyB2b2lkIGlsa19zZXR1cF93bV9sYXRlbmN5KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJc25iX3dtX2xhdGVuY3lfcXVpcmsoZGV2 X3ByaXYpOwogfQogCitzdGF0aWMgdm9pZCBza2xfZml4dXBfd21fbGF0ZW5jeV91bml0cyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJICAgICAgIHUxNiB3bVs4XSkKK3sK KwlpbnQgbGV2ZWwsIG51bV9sZXZlbHMgPSBpbGtfd21fbWF4X2xldmVsKGRldl9wcml2KSArIDE7 CisKKwkvKiBjb252ZXJ0IHVzZWMgdG8gLjEgdXNlYyB1bml0cyAqLworCWZvciAobGV2ZWwgPSAw OyBsZXZlbCA8IG51bV9sZXZlbHM7IGxldmVsKyspCisJCXdtW2xldmVsXSAqPSAxMDsKK30KKwog c3RhdGljIHZvaWQgc2tsX3NldHVwX3dtX2xhdGVuY3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogewogCWludGVsX3JlYWRfd21fbGF0ZW5jeShkZXZfcHJpdiwgZGV2X3ByaXYt PndtLnNrbF9sYXRlbmN5KTsKKworCXNrbF9maXh1cF93bV9sYXRlbmN5X3VuaXRzKGRldl9wcml2 LCBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3kpOworCiAJaW50ZWxfcHJpbnRfd21fbGF0ZW5jeShk ZXZfcHJpdiwgIkdlbjkgUGxhbmUiLCBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3kpOwogfQogCkBA IC0zMzAzLDcgKzMzMjQsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGlsa193bV9scF9sYXRlbmN5 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBsZXZlbCkKIAlpZiAoSVNfSEFTV0VMTChkZXZf cHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKIAkJcmV0dXJuIDIgKiBsZXZlbDsKIAll bHNlCi0JCXJldHVybiBkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3lbbGV2ZWxdOworCQkvKiBzcGVj aWZpZWQgaW4gLjUgdXNlYyB1bml0cyAqLworCQlyZXR1cm4gZGV2X3ByaXYtPndtLnByaV9sYXRl bmN5W2xldmVsXSAvIDU7CiB9CiAKIHN0YXRpYyB2b2lkIGlsa19jb21wdXRlX3dtX3Jlc3VsdHMo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKQEAgLTM3NjMsNyArMzc4NSw3IEBAIGJvb2wgaW50ZWxf Y2FuX2VuYWJsZV9zYWd2KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJICAgICAh d20tPndtW2xldmVsXS5wbGFuZV9lbjsgLS1sZXZlbCkKIAkJICAgICB7IH0KIAotCQlsYXRlbmN5 ID0gZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5W2xldmVsXTsKKwkJbGF0ZW5jeSA9IGludGVsX3Bs YW5lX3dtX2xhdGVuY3kocGxhbmUsIGxldmVsKTsKIAogCQlpZiAoc2tsX25lZWRzX21lbW9yeV9i d193YShpbnRlbF9zdGF0ZSkgJiYKIAkJICAgIHBsYW5lLT5iYXNlLnN0YXRlLT5mYi0+bW9kaWZp ZXIgPT0KQEAgLTQ2MzYsNyArNDY1OCw4IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVf d20oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCXN0cnVjdCBz a2xfd21fbGV2ZWwgKnJlc3VsdCAvKiBvdXQgKi8pCiB7CiAJY29uc3Qgc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSAqcHN0YXRlID0gJmludGVsX3BzdGF0ZS0+YmFzZTsKLQl1aW50MzJfdCBsYXRlbmN5 ID0gZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5W2xldmVsXTsKKwl1aW50MzJfdCBsYXRlbmN5ID0g aW50ZWxfcGxhbmVfd21fbGF0ZW5jeSh0b19pbnRlbF9wbGFuZShwc3RhdGUtPnBsYW5lKSwKKwkJ CQkJCSAgbGV2ZWwpOwogCXVpbnRfZml4ZWRfMTZfMTZfdCBtZXRob2QxLCBtZXRob2QyOwogCXVp bnRfZml4ZWRfMTZfMTZfdCBzZWxlY3RlZF9yZXN1bHQ7CiAJdWludDMyX3QgcmVzX2Jsb2Nrcywg cmVzX2xpbmVzOwotLSAKMi4xOC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK