From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH 01/15] drm: Add drm_rotation_90_or_270() Date: Fri, 22 Jul 2016 16:43:02 +0300 Message-ID: <1469194996-1899-2-git-send-email-ville.syrjala@linux.intel.com> References: <1469194996-1899-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1469194996-1899-1-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCldl IGhhdmUgaW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKCkgaW4gaTkxNSB0byBjaGVjayBpZiB0aGUg cm90YXRpb24gaXMKOTAgb3IgMjcwIGRlZ3JlZXMuIFNpbWlsYXIgY2hlY2tzIGFyZSBlbHNld2hl cmUgaW4gZHJtLCBzbyBsZXQncyBtb3ZlCnRoZSBoZWxwZXIgaW50byBhIGNlbnRyYWwgcGxhY2Ug YW5kIHVzZSBpdCBldmVyd2hlcmUuCgpTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogSm9vbmFzIExhaHRpbmVu IDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogQ2hyaXMgV2ls c29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2F0bWVs LWhsY2RjL2F0bWVsX2hsY2RjX3BsYW5lLmMgfCAgNCArKy0tCiBkcml2ZXJzL2dwdS9kcm0vZHJt X2F0b21pY19oZWxwZXIuYyAgICAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vZHJt X2NydGMuYyAgICAgICAgICAgICAgICAgICAgICB8ICAzICstLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMgICAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jICAgICAgICAgICAgfCAxMCArKysrKy0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgICAgICAgICB8ICA2IC0tLS0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgICAgICAgICAgICAgfCAxMiArKysrKystLS0t LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jICAgICAgICAgICAgIHwgIDIg Ky0KIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfcGxhbmUuYyAgICAgICAgICAgIHwgIDgg KystLS0tLS0KIGluY2x1ZGUvZHJtL2RybV9jcnRjLmggICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDUgKysrKysKIDExIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDMxIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1lbF9o bGNkY19wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX3Bs YW5lLmMKaW5kZXggMDE2YzE5MTIyMWYzLi5mMzM1MGM4MDcwNGQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1lbF9obGNkY19wbGFuZS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hdG1lbC1obGNkYy9hdG1lbF9obGNkY19wbGFuZS5jCkBAIC0zOTMsNyArMzkzLDcg QEAgc3RhdGljIHZvaWQgYXRtZWxfaGxjZGNfcGxhbmVfdXBkYXRlX2Zvcm1hdChzdHJ1Y3QgYXRt ZWxfaGxjZGNfcGxhbmUgKnBsYW5lLAogCiAJaWYgKChzdGF0ZS0+YmFzZS5mYi0+cGl4ZWxfZm9y bWF0ID09IERSTV9GT1JNQVRfWVVWNDIyIHx8CiAJICAgICBzdGF0ZS0+YmFzZS5mYi0+cGl4ZWxf Zm9ybWF0ID09IERSTV9GT1JNQVRfTlY2MSkgJiYKLQkgICAgKHN0YXRlLT5iYXNlLnJvdGF0aW9u ICYgKEJJVChEUk1fUk9UQVRFXzkwKSB8IEJJVChEUk1fUk9UQVRFXzI3MCkpKSkKKwkgICAgZHJt X3JvdGF0aW9uXzkwX29yXzI3MChzdGF0ZS0+YmFzZS5yb3RhdGlvbikpCiAJCWNmZyB8PSBBVE1F TF9ITENEQ19ZVVY0MjJST1Q7CiAKIAlhdG1lbF9obGNkY19sYXllcl91cGRhdGVfY2ZnKCZwbGFu ZS0+bGF5ZXIsCkBAIC02MjgsNyArNjI4LDcgQEAgc3RhdGljIGludCBhdG1lbF9obGNkY19wbGFu ZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcCwKIAkvKgogCSAqIFN3YXAgd2lkdGgg YW5kIHNpemUgaW4gY2FzZSBvZiA5MCBvciAyNzAgZGVncmVlcyByb3RhdGlvbgogCSAqLwotCWlm IChzdGF0ZS0+YmFzZS5yb3RhdGlvbiAmIChCSVQoRFJNX1JPVEFURV85MCkgfCBCSVQoRFJNX1JP VEFURV8yNzApKSkgeworCWlmIChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHN0YXRlLT5iYXNlLnJv dGF0aW9uKSkgewogCQl0bXAgPSBzdGF0ZS0+Y3J0Y193OwogCQlzdGF0ZS0+Y3J0Y193ID0gc3Rh dGUtPmNydGNfaDsKIAkJc3RhdGUtPmNydGNfaCA9IHRtcDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNf aGVscGVyLmMKaW5kZXggZGU3ZmRkY2UzY2VmLi4zZTEyZTZlNjQ2YWQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljX2hlbHBlci5jCkBAIC0yMzQ4LDcgKzIzNDgsNyBAQCBpbnQgX19kcm1fYXRvbWlj X2hlbHBlcl9zZXRfY29uZmlnKHN0cnVjdCBkcm1fbW9kZV9zZXQgKnNldCwKIAlwcmltYXJ5X3N0 YXRlLT5jcnRjX2ggPSB2ZGlzcGxheTsKIAlwcmltYXJ5X3N0YXRlLT5zcmNfeCA9IHNldC0+eCA8 PCAxNjsKIAlwcmltYXJ5X3N0YXRlLT5zcmNfeSA9IHNldC0+eSA8PCAxNjsKLQlpZiAocHJpbWFy eV9zdGF0ZS0+cm90YXRpb24gJiAoQklUKERSTV9ST1RBVEVfOTApIHwgQklUKERSTV9ST1RBVEVf MjcwKSkpIHsKKwlpZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChwcmltYXJ5X3N0YXRlLT5yb3Rh dGlvbikpIHsKIAkJcHJpbWFyeV9zdGF0ZS0+c3JjX3cgPSB2ZGlzcGxheSA8PCAxNjsKIAkJcHJp bWFyeV9zdGF0ZS0+c3JjX2ggPSBoZGlzcGxheSA8PCAxNjsKIAl9IGVsc2UgewpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMu YwppbmRleCBmMWQ5ZjA1NjlkN2YuLjk4NmRlMTgwZTZjMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKQEAgLTI4 MDQsOCArMjgwNCw3IEBAIGludCBkcm1fY3J0Y19jaGVja192aWV3cG9ydChjb25zdCBzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCiAJZHJtX2NydGNfZ2V0X2h2X3RpbWluZyhtb2RlLCAmaGRpc3BsYXks ICZ2ZGlzcGxheSk7CiAKIAlpZiAoY3J0Yy0+c3RhdGUgJiYKLQkgICAgY3J0Yy0+cHJpbWFyeS0+ c3RhdGUtPnJvdGF0aW9uICYgKEJJVChEUk1fUk9UQVRFXzkwKSB8Ci0JCQkJCSAgICAgIEJJVChE Uk1fUk9UQVRFXzI3MCkpKQorCSAgICBkcm1fcm90YXRpb25fOTBfb3JfMjcwKGNydGMtPnByaW1h cnktPnN0YXRlLT5yb3RhdGlvbikpCiAJCXN3YXAoaGRpc3BsYXksIHZkaXNwbGF5KTsKIAogCXJl dHVybiBjaGVja19zcmNfY29vcmRzKHggPDwgMTYsIHkgPDwgMTYsCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2F0b21pY19wbGFuZS5jCmluZGV4IDdkZTc3MjFmNjViYy4uYzE5ZWI5YTBjZDRh IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwpAQCAtMTU2LDcg KzE1Niw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAogCWludGVsX3N0YXRlLT5jbGlwLnkyID0KIAkJY3J0Y19zdGF0ZS0+YmFz ZS5lbmFibGUgPyBjcnRjX3N0YXRlLT5waXBlX3NyY19oIDogMDsKIAotCWlmIChzdGF0ZS0+ZmIg JiYgaW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKHN0YXRlLT5yb3RhdGlvbikpIHsKKwlpZiAoc3Rh dGUtPmZiICYmIGRybV9yb3RhdGlvbl85MF9vcl8yNzAoc3RhdGUtPnJvdGF0aW9uKSkgewogCQlp ZiAoIShzdGF0ZS0+ZmItPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8 CiAJCQlzdGF0ZS0+ZmItPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCkp IHsKIAkJCURSTV9ERUJVR19LTVMoIlkvWWYgdGlsaW5nIHJlcXVpcmVkIGZvciA5MC8yNzAhXG4i KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCA3OGJlYjdlOWQzODQuLjUx MzU3OTg2Y2Y0YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMjEzOCw3 ICsyMTM4LDcgQEAgaW50ZWxfZmlsbF9mYl9nZ3R0X3ZpZXcoc3RydWN0IGk5MTVfZ2d0dF92aWV3 ICp2aWV3LAogCQkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiAJCQl1bnNpZ25l ZCBpbnQgcm90YXRpb24pCiB7Ci0JaWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlv bikpIHsKKwlpZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpIHsKIAkJKnZpZXcg PSBpOTE1X2dndHRfdmlld19yb3RhdGVkOwogCQl2aWV3LT5wYXJhbXMucm90YXRlZCA9IHRvX2lu dGVsX2ZyYW1lYnVmZmVyKGZiKS0+cm90X2luZm87CiAJfSBlbHNlIHsKQEAgLTIzNTIsNyArMjM1 Miw3IEBAIHUzMiBpbnRlbF9jb21wdXRlX3RpbGVfb2Zmc2V0KGludCAqeCwgaW50ICp5LAogCQlp bnRlbF90aWxlX2RpbXMoZGV2X3ByaXYsICZ0aWxlX3dpZHRoLCAmdGlsZV9oZWlnaHQsCiAJCQkJ ZmJfbW9kaWZpZXIsIGNwcCk7CiAKLQkJaWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChyb3Rh dGlvbikpIHsKKwkJaWYgKGRybV9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pKSB7CiAJCQlw aXRjaF90aWxlcyA9IHBpdGNoIC8gdGlsZV9oZWlnaHQ7CiAJCQlzd2FwKHRpbGVfd2lkdGgsIHRp bGVfaGVpZ2h0KTsKIAkJfSBlbHNlIHsKQEAgLTMwMTEsNyArMzAxMSw3IEBAIHN0YXRpYyB2b2lk IHNreWxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAK IAlXQVJOX09OKGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+c3JjKSA9PSAwKTsKIAotCWlm IChpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pKSB7CisJaWYgKGRybV9yb3RhdGlv bl85MF9vcl8yNzAocm90YXRpb24pKSB7CiAJCWludCBjcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2Nw cChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKIAogCQkvKiBzdHJpZGUgPSBTdXJmYWNlIGhlaWdodCBp biB0aWxlcyAqLwpAQCAtNDE3OSw3ICs0MTc5LDcgQEAgc2tsX3VwZGF0ZV9zY2FsZXIoc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsIGJvb2wgZm9yY2VfZGV0YWNoLAogCQl0b19p bnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7CiAJaW50IG5lZWRfc2NhbGluZzsKIAot CW5lZWRfc2NhbGluZyA9IGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikgPworCW5l ZWRfc2NhbGluZyA9IGRybV9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pID8KIAkJKHNyY19o ICE9IGRzdF93IHx8IHNyY193ICE9IGRzdF9oKToKIAkJKHNyY193ICE9IGRzdF93IHx8IHNyY19o ICE9IGRzdF9oKTsKIApAQCAtMTE0MTMsNyArMTE0MTMsNyBAQCBzdGF0aWMgdm9pZCBza2xfZG9f bW1pb19mbGlwKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAogCSAqIFRoZSBzdHJpZGUg aXMgZWl0aGVyIGV4cHJlc3NlZCBhcyBhIG11bHRpcGxlIG9mIDY0IGJ5dGVzIGNodW5rcyBmb3IK IAkgKiBsaW5lYXIgYnVmZmVycyBvciBpbiBudW1iZXIgb2YgdGlsZXMgZm9yIHRpbGVkIGJ1ZmZl cnMuCiAJICovCi0JaWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpIHsKKwlp ZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpIHsKIAkJLyogc3RyaWRlID0gU3Vy ZmFjZSBoZWlnaHQgaW4gdGlsZXMgKi8KIAkJdGlsZV9oZWlnaHQgPSBpbnRlbF90aWxlX2hlaWdo dChkZXZfcHJpdiwgZmItPm1vZGlmaWVyWzBdLCAwKTsKIAkJc3RyaWRlID0gRElWX1JPVU5EX1VQ KGZiLT5oZWlnaHQsIHRpbGVfaGVpZ2h0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXgg ZTc0ZDg1MTg2OGM1Li45MDdhNzJjZmRhZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBA IC0xMjU1LDEyICsxMjU1LDYgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMo c3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogdW5zaWduZWQgaW50IGludGVsX3Rp bGVfaGVpZ2h0KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAg ICAgICB1aW50NjRfdCBmYl9tb2RpZmllciwgdW5zaWduZWQgaW50IGNwcCk7CiAKLXN0YXRpYyBp bmxpbmUgYm9vbAotaW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKHVuc2lnbmVkIGludCByb3RhdGlv bikKLXsKLQlyZXR1cm4gcm90YXRpb24gJiAoQklUKERSTV9ST1RBVEVfOTApIHwgQklUKERSTV9S T1RBVEVfMjcwKSk7Ci19Ci0KIHZvaWQgaW50ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpOwog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCmluZGV4IDc4MWUyZjVmN2NkOC4uZjNmMzMyMjEzOWUw IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwpAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9mYmNfZ2V0X3BsYW5lX3NvdXJjZV9zaXplKHN0cnVjdCBpbnRlbF9mYmNfc3RhdGVf Y2FjaGUgKmNhY2hlLAogewogCWludCB3LCBoOwogCi0JaWYgKGludGVsX3JvdGF0aW9uXzkwX29y XzI3MChjYWNoZS0+cGxhbmUucm90YXRpb24pKSB7CisJaWYgKGRybV9yb3RhdGlvbl85MF9vcl8y NzAoY2FjaGUtPnBsYW5lLnJvdGF0aW9uKSkgewogCQl3ID0gY2FjaGUtPnBsYW5lLnNyY19oOwog CQloID0gY2FjaGUtPnBsYW5lLnNyY193OwogCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u YwppbmRleCA2NGQ2MjhjOTE1YTMuLjNhMTg3M2VkMjZiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w bS5jCkBAIC0zMDA0LDcgKzMwMDQsNyBAQCBza2xfcGxhbmVfZG93bnNjYWxlX2Ftb3VudChjb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBzdGF0ZSkKIAlzcmNfaCA9IGRybV9yZWN0X2hl aWdodCgmcHN0YXRlLT5zcmMpOwogCWRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoJnBzdGF0ZS0+ZHN0 KTsKIAlkc3RfaCA9IGRybV9yZWN0X2hlaWdodCgmcHN0YXRlLT5kc3QpOwotCWlmIChpbnRlbF9y b3RhdGlvbl85MF9vcl8yNzAocHN0YXRlLT5iYXNlLnJvdGF0aW9uKSkKKwlpZiAoZHJtX3JvdGF0 aW9uXzkwX29yXzI3MChwc3RhdGUtPmJhc2Uucm90YXRpb24pKQogCQlzd2FwKGRzdF93LCBkc3Rf aCk7CiAKIAlkb3duc2NhbGVfaCA9IG1heChzcmNfaCAvIGRzdF9oLCAodWludDMyX3QpRFJNX1BM QU5FX0hFTFBFUl9OT19TQ0FMSU5HKTsKQEAgLTMwMzUsNyArMzAzNSw3IEBAIHNrbF9wbGFuZV9y ZWxhdGl2ZV9kYXRhX3JhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwK IAl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZpbnRlbF9wc3RhdGUtPnNyYykgPj4gMTY7CiAJaGVp Z2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZpbnRlbF9wc3RhdGUtPnNyYykgPj4gMTY7CiAKLQlpZiAo aW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKHBzdGF0ZS0+cm90YXRpb24pKQorCWlmIChkcm1fcm90 YXRpb25fOTBfb3JfMjcwKHBzdGF0ZS0+cm90YXRpb24pKQogCQlzd2FwKHdpZHRoLCBoZWlnaHQp OwogCiAJLyogZm9yIHBsYW5hciBmb3JtYXQgKi8KQEAgLTMxMzcsNyArMzEzNyw3IEBAIHNrbF9k ZGJfbWluX2FsbG9jKGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZSwKIAlzcmNf dyA9IGRybV9yZWN0X3dpZHRoKCZpbnRlbF9wc3RhdGUtPnNyYykgPj4gMTY7CiAJc3JjX2ggPSBk cm1fcmVjdF9oZWlnaHQoJmludGVsX3BzdGF0ZS0+c3JjKSA+PiAxNjsKIAotCWlmIChpbnRlbF9y b3RhdGlvbl85MF9vcl8yNzAocHN0YXRlLT5yb3RhdGlvbikpCisJaWYgKGRybV9yb3RhdGlvbl85 MF9vcl8yNzAocHN0YXRlLT5yb3RhdGlvbikpCiAJCXN3YXAoc3JjX3csIHNyY19oKTsKIAogCS8q IEhhbHZlIFVWIHBsYW5lIHdpZHRoIGFuZCBoZWlnaHQgZm9yIE5WMTIgKi8KQEAgLTMxNTEsNyAr MzE1MSw3IEBAIHNrbF9kZGJfbWluX2FsbG9jKGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUg KnBzdGF0ZSwKIAllbHNlCiAJCXBsYW5lX2JwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5w aXhlbF9mb3JtYXQsIDApOwogCi0JaWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChwc3RhdGUt PnJvdGF0aW9uKSkgeworCWlmIChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHBzdGF0ZS0+cm90YXRp b24pKSB7CiAJCXN3aXRjaCAocGxhbmVfYnBwKSB7CiAJCWNhc2UgMToKIAkJCW1pbl9zY2FubGlu ZXMgPSAzMjsKQEAgLTM0MDcsNyArMzQwNyw3IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxh bmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXdpZHRoID0g ZHJtX3JlY3Rfd2lkdGgoJmludGVsX3BzdGF0ZS0+c3JjKSA+PiAxNjsKIAloZWlnaHQgPSBkcm1f cmVjdF9oZWlnaHQoJmludGVsX3BzdGF0ZS0+c3JjKSA+PiAxNjsKIAotCWlmIChpbnRlbF9yb3Rh dGlvbl85MF9vcl8yNzAocHN0YXRlLT5yb3RhdGlvbikpCisJaWYgKGRybV9yb3RhdGlvbl85MF9v cl8yNzAocHN0YXRlLT5yb3RhdGlvbikpCiAJCXN3YXAod2lkdGgsIGhlaWdodCk7CiAKIAljcHAg PSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKQEAgLTM0MjgsNyAr MzQyOCw3IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAgICBmYi0+bW9kaWZpZXJbMF0gPT0gSTkxNV9G T1JNQVRfTU9EX1lmX1RJTEVEKSB7CiAJCXVpbnQzMl90IG1pbl9zY2FubGluZXMgPSA0OwogCQl1 aW50MzJfdCB5X3RpbGVfbWluaW11bTsKLQkJaWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChw c3RhdGUtPnJvdGF0aW9uKSkgeworCQlpZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChwc3RhdGUt PnJvdGF0aW9uKSkgewogCQkJaW50IGNwcCA9IChmYi0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JN QVRfTlYxMikgPwogCQkJCWRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDEp IDoKIAkJCQlkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKaW5kZXggMGRlOTM1YWQwMWMyLi5jYzZhZjE0MTBkNjcg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCkBAIC0yNTEsNyArMjUxLDcgQEAgc2ts X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsCiAKIAlzdXJmX2FkZHIg PSBpbnRlbF9wbGFuZV9vYmpfb2Zmc2V0KGludGVsX3BsYW5lLCBvYmosIDApOwogCi0JaWYgKGlu dGVsX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpIHsKKwlpZiAoZHJtX3JvdGF0aW9uXzkw X29yXzI3MChyb3RhdGlvbikpIHsKIAkJaW50IGNwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZi LT5waXhlbF9mb3JtYXQsIDApOwogCiAJCS8qIHN0cmlkZTogU3VyZmFjZSBoZWlnaHQgaW4gdGls ZXMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfcGxhbmUuYyBi L2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfcGxhbmUuYwppbmRleCA1MjUyYWI3MjBlNzAu LjdmMGQ1NjdiOGQ2NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9w bGFuZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfcGxhbmUuYwpAQCAtMTA4 LDE2ICsxMDgsMTIgQEAgc3RhdGljIHZvaWQgb21hcF9wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLAogCXdpbi5zcmNfeCA9IHN0YXRlLT5zcmNfeCA+PiAxNjsKIAl3 aW4uc3JjX3kgPSBzdGF0ZS0+c3JjX3kgPj4gMTY7CiAKLQlzd2l0Y2ggKHN0YXRlLT5yb3RhdGlv biAmIERSTV9ST1RBVEVfTUFTSykgewotCWNhc2UgQklUKERSTV9ST1RBVEVfOTApOgotCWNhc2Ug QklUKERSTV9ST1RBVEVfMjcwKToKKwlpZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChzdGF0ZS0+ cm90YXRpb24pKSB7CiAJCXdpbi5zcmNfdyA9IHN0YXRlLT5zcmNfaCA+PiAxNjsKIAkJd2luLnNy Y19oID0gc3RhdGUtPnNyY193ID4+IDE2OwotCQlicmVhazsKLQlkZWZhdWx0OgorCX0gZWxzZSB7 CiAJCXdpbi5zcmNfdyA9IHN0YXRlLT5zcmNfdyA+PiAxNjsKIAkJd2luLnNyY19oID0gc3RhdGUt PnNyY19oID4+IDE2OwotCQlicmVhazsKIAl9CiAKIAkvKiB1cGRhdGUgc2Nhbm91dDogKi8KZGlm ZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmggYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5o CmluZGV4IDNlZGVhZjg4ZWJjMC4uYjdhYzdkY2Y1MmRiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2Ry bS9kcm1fY3J0Yy5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKQEAgLTkyLDYgKzkyLDEx IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgSTY0MlU2NChpbnQ2NF90IHZhbCkKICNkZWZpbmUg RFJNX1JFRkxFQ1RfWAk0CiAjZGVmaW5lIERSTV9SRUZMRUNUX1kJNQogCitzdGF0aWMgaW5saW5l IGJvb2wgZHJtX3JvdGF0aW9uXzkwX29yXzI3MCh1bnNpZ25lZCBpbnQgcm90YXRpb24pCit7CisJ cmV0dXJuIHJvdGF0aW9uICYgKEJJVChEUk1fUk9UQVRFXzkwKSB8IEJJVChEUk1fUk9UQVRFXzI3 MCkpOworfQorCiBlbnVtIGRybV9jb25uZWN0b3JfZm9yY2UgewogCURSTV9GT1JDRV9VTlNQRUNJ RklFRCwKIAlEUk1fRk9SQ0VfT0ZGLAotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=