From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH v2 01/15] drm: Add drm_rotation_90_or_270() Date: Mon, 26 Sep 2016 19:30:46 +0300 Message-ID: <1474907460-10717-2-git-send-email-ville.syrjala@linux.intel.com> References: <1474907460-10717-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: <1474907460-10717-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 YW5kIHVzZSBpdCBldmVyd2hlcmUuCgp2MjogRHJvcCB0aGUgQklUKCkKICAgIENvbnZlcnQgYWxs IG5ldyBpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAoKSBjYWxscwogICAgRGVhbCB3aXRoIHN1cGVy Zmx1b3VzIGNvZGUgc2h1ZmZsaW5nCgpTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogSm9vbmFzIExhaHRpbmVu IDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPiAodjEpClJldmlld2VkLWJ5OiBDaHJp cyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4gKHYxKQotLS0KIGRyaXZlcnMvZ3B1 L2RybS9hdG1lbC1obGNkYy9hdG1lbF9obGNkY19wbGFuZS5jIHwgIDQgKystLQogZHJpdmVycy9n cHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9n cHUvZHJtL2RybV9jcnRjLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMyArLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jICAgICAgIHwgIDMgKystCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICAgICAgICB8IDE2ICsrKysrKysrLS0t LS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICAgICAgIHwg IDYgLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyAgICAgICAgICAgICAg ICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgICAgICAgICAg ICB8IDEyICsrKysrKy0tLS0tLQogZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9wbGFuZS5j ICAgICAgICAgICAgfCAgOCArKy0tLS0tLQogaW5jbHVkZS9kcm0vZHJtX2JsZW5kLmggICAgICAg ICAgICAgICAgICAgICAgICAgfCAgNSArKysrKwogMTAgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0 aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2F0 bWVsLWhsY2RjL2F0bWVsX2hsY2RjX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXRtZWwtaGxj ZGMvYXRtZWxfaGxjZGNfcGxhbmUuYwppbmRleCA5ZDRjMDMwNjcyZjAuLmIzODAxNzlkNDAxMyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX3BsYW5l LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2F0bWVsLWhsY2RjL2F0bWVsX2hsY2RjX3BsYW5lLmMK QEAgLTM5Myw3ICszOTMsNyBAQCBzdGF0aWMgdm9pZCBhdG1lbF9obGNkY19wbGFuZV91cGRhdGVf Zm9ybWF0KHN0cnVjdCBhdG1lbF9obGNkY19wbGFuZSAqcGxhbmUsCiAKIAlpZiAoKHN0YXRlLT5i YXNlLmZiLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9ZVVY0MjIgfHwKIAkgICAgIHN0YXRl LT5iYXNlLmZiLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjYxKSAmJgotCSAgICAoc3Rh dGUtPmJhc2Uucm90YXRpb24gJiAoRFJNX1JPVEFURV85MCB8IERSTV9ST1RBVEVfMjcwKSkpCisJ ICAgIGRybV9yb3RhdGlvbl85MF9vcl8yNzAoc3RhdGUtPmJhc2Uucm90YXRpb24pKQogCQljZmcg fD0gQVRNRUxfSExDRENfWVVWNDIyUk9UOwogCiAJYXRtZWxfaGxjZGNfbGF5ZXJfdXBkYXRlX2Nm ZygmcGxhbmUtPmxheWVyLApAQCAtNjI4LDcgKzYyOCw3IEBAIHN0YXRpYyBpbnQgYXRtZWxfaGxj ZGNfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnAsCiAJLyoKIAkgKiBTd2Fw IHdpZHRoIGFuZCBzaXplIGluIGNhc2Ugb2YgOTAgb3IgMjcwIGRlZ3JlZXMgcm90YXRpb24KIAkg Ki8KLQlpZiAoc3RhdGUtPmJhc2Uucm90YXRpb24gJiAoRFJNX1JPVEFURV85MCB8IERSTV9ST1RB VEVfMjcwKSkgeworCWlmIChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHN0YXRlLT5iYXNlLnJvdGF0 aW9uKSkgewogCQl0bXAgPSBzdGF0ZS0+Y3J0Y193OwogCQlzdGF0ZS0+Y3J0Y193ID0gc3RhdGUt PmNydGNfaDsKIAkJc3RhdGUtPmNydGNfaCA9IHRtcDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVs cGVyLmMKaW5kZXggYzNmODM0NzZmOTk2Li4xMzAzOGJkYjUwYWMgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljX2hlbHBlci5jCkBAIC0yNDEyLDcgKzI0MTIsNyBAQCBpbnQgX19kcm1fYXRvbWljX2hl bHBlcl9zZXRfY29uZmlnKHN0cnVjdCBkcm1fbW9kZV9zZXQgKnNldCwKIAlwcmltYXJ5X3N0YXRl LT5jcnRjX2ggPSB2ZGlzcGxheTsKIAlwcmltYXJ5X3N0YXRlLT5zcmNfeCA9IHNldC0+eCA8PCAx NjsKIAlwcmltYXJ5X3N0YXRlLT5zcmNfeSA9IHNldC0+eSA8PCAxNjsKLQlpZiAocHJpbWFyeV9z dGF0ZS0+cm90YXRpb24gJiAoRFJNX1JPVEFURV85MCB8IERSTV9ST1RBVEVfMjcwKSkgeworCWlm IChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHByaW1hcnlfc3RhdGUtPnJvdGF0aW9uKSkgewogCQlw cmltYXJ5X3N0YXRlLT5zcmNfdyA9IHZkaXNwbGF5IDw8IDE2OwogCQlwcmltYXJ5X3N0YXRlLT5z cmNfaCA9IGhkaXNwbGF5IDw8IDE2OwogCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCmluZGV4IDJkN2Jl ZGYyODY0Ny4uMzMwN2ExMTRmNmQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Ny dGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYwpAQCAtNjk1LDggKzY5NSw3IEBA IGludCBkcm1fY3J0Y19jaGVja192aWV3cG9ydChjb25zdCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMs CiAJZHJtX2NydGNfZ2V0X2h2X3RpbWluZyhtb2RlLCAmaGRpc3BsYXksICZ2ZGlzcGxheSk7CiAK IAlpZiAoY3J0Yy0+c3RhdGUgJiYKLQkgICAgY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPnJvdGF0aW9u ICYgKERSTV9ST1RBVEVfOTAgfAotCQkJCQkgICAgICBEUk1fUk9UQVRFXzI3MCkpCisJICAgIGRy bV9yb3RhdGlvbl85MF9vcl8yNzAoY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPnJvdGF0aW9uKSkKIAkJ c3dhcChoZGlzcGxheSwgdmRpc3BsYXkpOwogCiAJcmV0dXJuIGRybV9mcmFtZWJ1ZmZlcl9jaGVj a19zcmNfY29vcmRzKHggPDwgMTYsIHkgPDwgMTYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F0b21pY19wbGFuZS5jCmluZGV4IGI4MmRlMzA3MmQ0Zi4uYzc2MmFlNTQ5YTFjIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwpAQCAtMTQyLDggKzE0Miw5IEBA IHN0YXRpYyBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAogCWludGVsX3N0YXRlLT5jbGlwLnkyID0KIAkJY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUg PyBjcnRjX3N0YXRlLT5waXBlX3NyY19oIDogMDsKIAotCWlmIChzdGF0ZS0+ZmIgJiYgaW50ZWxf cm90YXRpb25fOTBfb3JfMjcwKHN0YXRlLT5yb3RhdGlvbikpIHsKKwlpZiAoc3RhdGUtPmZiICYm IGRybV9yb3RhdGlvbl85MF9vcl8yNzAoc3RhdGUtPnJvdGF0aW9uKSkgewogCQljaGFyICpmb3Jt YXRfbmFtZTsKKwogCQlpZiAoIShzdGF0ZS0+ZmItPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFU X01PRF9ZX1RJTEVEIHx8CiAJCQlzdGF0ZS0+ZmItPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFU X01PRF9ZZl9USUxFRCkpIHsKIAkJCURSTV9ERUJVR19LTVMoIlkvWWYgdGlsaW5nIHJlcXVpcmVk IGZvciA5MC8yNzAhXG4iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCBl NWFkMTAxMGM4YjEuLjllNDc1YzQxYjcyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwpAQCAtMjEzOSw3ICsyMTM5LDcgQEAgaW50ZWxfZmlsbF9mYl9nZ3R0X3ZpZXcoc3RydWN0 IGk5MTVfZ2d0dF92aWV3ICp2aWV3LAogCQkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIsCiAJCQl1bnNpZ25lZCBpbnQgcm90YXRpb24pCiB7Ci0JaWYgKGludGVsX3JvdGF0aW9uXzkw X29yXzI3MChyb3RhdGlvbikpIHsKKwlpZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlv bikpIHsKIAkJKnZpZXcgPSBpOTE1X2dndHRfdmlld19yb3RhdGVkOwogCQl2aWV3LT5wYXJhbXMu cm90YXRlZCA9IHRvX2ludGVsX2ZyYW1lYnVmZmVyKGZiKS0+cm90X2luZm87CiAJfSBlbHNlIHsK QEAgLTIyNjAsNyArMjI2MCw3IEBAIHZvaWQgaW50ZWxfdW5waW5fZmJfb2JqKHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiLCB1bnNpZ25lZCBpbnQgcm90YXRpb24pCiBzdGF0aWMgaW50IGludGVs X2ZiX3BpdGNoKGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUsCiAJ CQkgIHVuc2lnbmVkIGludCByb3RhdGlvbikKIHsKLQlpZiAoaW50ZWxfcm90YXRpb25fOTBfb3Jf MjcwKHJvdGF0aW9uKSkKKwlpZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpCiAJ CXJldHVybiB0b19pbnRlbF9mcmFtZWJ1ZmZlcihmYiktPnJvdGF0ZWRbcGxhbmVdLnBpdGNoOwog CWVsc2UKIAkJcmV0dXJuIGZiLT5waXRjaGVzW3BsYW5lXTsKQEAgLTIyOTYsNyArMjI5Niw3IEBA IHZvaWQgaW50ZWxfYWRkX2ZiX29mZnNldHMoaW50ICp4LCBpbnQgKnksCiAJY29uc3Qgc3RydWN0 IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiA9IHRvX2ludGVsX2ZyYW1lYnVmZmVyKHN0YXRl LT5iYXNlLmZiKTsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBzdGF0ZS0+YmFzZS5yb3RhdGlv bjsKIAotCWlmIChpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pKSB7CisJaWYgKGRy bV9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pKSB7CiAJCSp4ICs9IGludGVsX2ZiLT5yb3Rh dGVkW3BsYW5lXS54OwogCQkqeSArPSBpbnRlbF9mYi0+cm90YXRlZFtwbGFuZV0ueTsKIAl9IGVs c2UgewpAQCAtMjM2MCw3ICsyMzYwLDcgQEAgc3RhdGljIHUzMiBpbnRlbF9hZGp1c3RfdGlsZV9v ZmZzZXQoaW50ICp4LCBpbnQgKnksCiAJCWludGVsX3RpbGVfZGltcyhkZXZfcHJpdiwgJnRpbGVf d2lkdGgsICZ0aWxlX2hlaWdodCwKIAkJCQlmYi0+bW9kaWZpZXJbcGxhbmVdLCBjcHApOwogCi0J CWlmIChpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pKSB7CisJCWlmIChkcm1fcm90 YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSkgewogCQkJcGl0Y2hfdGlsZXMgPSBwaXRjaCAvIHRp bGVfaGVpZ2h0OwogCQkJc3dhcCh0aWxlX3dpZHRoLCB0aWxlX2hlaWdodCk7CiAJCX0gZWxzZSB7 CkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBzdGF0aWMgdTMyIF9pbnRlbF9jb21wdXRlX3RpbGVfb2Zm c2V0KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJaW50ZWxfdGls ZV9kaW1zKGRldl9wcml2LCAmdGlsZV93aWR0aCwgJnRpbGVfaGVpZ2h0LAogCQkJCWZiX21vZGlm aWVyLCBjcHApOwogCi0JCWlmIChpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pKSB7 CisJCWlmIChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSkgewogCQkJcGl0Y2hfdGls ZXMgPSBwaXRjaCAvIHRpbGVfaGVpZ2h0OwogCQkJc3dhcCh0aWxlX3dpZHRoLCB0aWxlX2hlaWdo dCk7CiAJCX0gZWxzZSB7CkBAIC0yOTc2LDcgKzI5NzYsNyBAQCBpbnQgc2tsX2NoZWNrX3BsYW5l X3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAlpbnQgcmV0 OwogCiAJLyogUm90YXRlIHNyYyBjb29yZGluYXRlcyB0byBtYXRjaCByb3RhdGVkIEdUVCB2aWV3 ICovCi0JaWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpCisJaWYgKGRybV9y b3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pKQogCQlkcm1fcmVjdF9yb3RhdGUoJnBsYW5lX3N0 YXRlLT5iYXNlLnNyYywKIAkJCQlmYi0+d2lkdGgsIGZiLT5oZWlnaHQsIERSTV9ST1RBVEVfMjcw KTsKIApAQCAtMzI3Niw3ICszMjc2LDcgQEAgdTMyIHNrbF9wbGFuZV9zdHJpZGUoY29uc3Qgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBwbGFuZSwKIAkgKiBUaGUgc3RyaWRlIGlzIGVp dGhlciBleHByZXNzZWQgYXMgYSBtdWx0aXBsZSBvZiA2NCBieXRlcyBjaHVua3MgZm9yCiAJICog bGluZWFyIGJ1ZmZlcnMgb3IgaW4gbnVtYmVyIG9mIHRpbGVzIGZvciB0aWxlZCBidWZmZXJzLgog CSAqLwotCWlmIChpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pKSB7CisJaWYgKGRy bV9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pKSB7CiAJCWludCBjcHAgPSBkcm1fZm9ybWF0 X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCBwbGFuZSk7CiAKIAkJc3RyaWRlIC89IGludGVs X3RpbGVfaGVpZ2h0KGRldl9wcml2LCBmYi0+bW9kaWZpZXJbMF0sIGNwcCk7CkBAIC00NjY3LDcg KzQ2NjcsNyBAQCBza2xfdXBkYXRlX3NjYWxlcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwgYm9vbCBmb3JjZV9kZXRhY2gsCiAJCXRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+ YmFzZS5jcnRjKTsKIAlpbnQgbmVlZF9zY2FsaW5nOwogCi0JbmVlZF9zY2FsaW5nID0gaW50ZWxf cm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSA/CisJbmVlZF9zY2FsaW5nID0gZHJtX3JvdGF0 aW9uXzkwX29yXzI3MChyb3RhdGlvbikgPwogCQkoc3JjX2ggIT0gZHN0X3cgfHwgc3JjX3cgIT0g ZHN0X2gpOgogCQkoc3JjX3cgIT0gZHN0X3cgfHwgc3JjX2ggIT0gZHN0X2gpOwogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCmluZGV4IDljZTI2MTEyZGEyMi4uZWE4NTE2Mjk3MzcwIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMTI4OCwxMiArMTI4OCw2IEBAIGludCBpbnRlbF9wbGFu ZV9hdG9taWNfY2FsY19jaGFuZ2VzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK IHVuc2lnbmVkIGludCBpbnRlbF90aWxlX2hlaWdodChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCiAJCQkgICAgICAgdWludDY0X3QgZmJfbW9kaWZpZXIsIHVuc2lnbmVk IGludCBjcHApOwogCi1zdGF0aWMgaW5saW5lIGJvb2wKLWludGVsX3JvdGF0aW9uXzkwX29yXzI3 MCh1bnNpZ25lZCBpbnQgcm90YXRpb24pCi17Ci0JcmV0dXJuIHJvdGF0aW9uICYgKERSTV9ST1RB VEVfOTAgfCBEUk1fUk9UQVRFXzI3MCk7Ci19Ci0KIHZvaWQgaW50ZWxfY3JlYXRlX3JvdGF0aW9u X3Byb3BlcnR5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJCXN0cnVjdCBpbnRlbF9wbGFu ZSAqcGxhbmUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCmluZGV4IDYxNzE4OWFlMDRiNC4u NDkwNDhkOWQ3ODk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwpAQCAtODQsNyArODQsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9mYmNfZ2V0X3BsYW5lX3NvdXJjZV9zaXplKHN0cnVjdCBpbnRl bF9mYmNfc3RhdGVfY2FjaGUgKmNhY2hlLAogewogCWludCB3LCBoOwogCi0JaWYgKGludGVsX3Jv dGF0aW9uXzkwX29yXzI3MChjYWNoZS0+cGxhbmUucm90YXRpb24pKSB7CisJaWYgKGRybV9yb3Rh dGlvbl85MF9vcl8yNzAoY2FjaGUtPnBsYW5lLnJvdGF0aW9uKSkgewogCQl3ID0gY2FjaGUtPnBs YW5lLnNyY19oOwogCQloID0gY2FjaGUtPnBsYW5lLnNyY193OwogCX0gZWxzZSB7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYwppbmRleCAyZGYwNmI3MDNlM2QuLjE0NzI0MDBkZGNlMyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5jCkBAIC0zMTUxLDcgKzMxNTEsNyBAQCBza2xfcGxhbmVfZG93bnNjYWxl X2Ftb3VudChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBzdGF0ZSkKIAlzcmNfaCA9 IGRybV9yZWN0X2hlaWdodCgmcHN0YXRlLT5iYXNlLnNyYyk7CiAJZHN0X3cgPSBkcm1fcmVjdF93 aWR0aCgmcHN0YXRlLT5iYXNlLmRzdCk7CiAJZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBzdGF0 ZS0+YmFzZS5kc3QpOwotCWlmIChpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAocHN0YXRlLT5iYXNl LnJvdGF0aW9uKSkKKwlpZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChwc3RhdGUtPmJhc2Uucm90 YXRpb24pKQogCQlzd2FwKGRzdF93LCBkc3RfaCk7CiAKIAlkb3duc2NhbGVfaCA9IG1heChzcmNf aCAvIGRzdF9oLCAodWludDMyX3QpRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HKTsKQEAgLTMx ODIsNyArMzE4Miw3IEBAIHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZpbnRl bF9wc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKIAloZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJmlu dGVsX3BzdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwogCi0JaWYgKGludGVsX3JvdGF0aW9uXzkwX29y XzI3MChwc3RhdGUtPnJvdGF0aW9uKSkKKwlpZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChwc3Rh dGUtPnJvdGF0aW9uKSkKIAkJc3dhcCh3aWR0aCwgaGVpZ2h0KTsKIAogCS8qIGZvciBwbGFuYXIg Zm9ybWF0ICovCkBAIC0zMjgyLDcgKzMyODIsNyBAQCBza2xfZGRiX21pbl9hbGxvYyhjb25zdCBz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGUsCiAJc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgm aW50ZWxfcHN0YXRlLT5iYXNlLnNyYykgPj4gMTY7CiAJc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQo JmludGVsX3BzdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwogCi0JaWYgKGludGVsX3JvdGF0aW9uXzkw X29yXzI3MChwc3RhdGUtPnJvdGF0aW9uKSkKKwlpZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChw c3RhdGUtPnJvdGF0aW9uKSkKIAkJc3dhcChzcmNfdywgc3JjX2gpOwogCiAJLyogSGFsdmUgVVYg cGxhbmUgd2lkdGggYW5kIGhlaWdodCBmb3IgTlYxMiAqLwpAQCAtMzI5Niw3ICszMjk2LDcgQEAg c2tsX2RkYl9taW5fYWxsb2MoY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlLAog CWVsc2UKIAkJcGxhbmVfYnBwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1h dCwgMCk7CiAKLQlpZiAoaW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKHBzdGF0ZS0+cm90YXRpb24p KSB7CisJaWYgKGRybV9yb3RhdGlvbl85MF9vcl8yNzAocHN0YXRlLT5yb3RhdGlvbikpIHsKIAkJ c3dpdGNoIChwbGFuZV9icHApIHsKIAkJY2FzZSAxOgogCQkJbWluX3NjYW5saW5lcyA9IDMyOwpA QCAtMzU1NCw3ICszNTU0LDcgQEAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25z dCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJd2lkdGggPSBkcm1fcmVjdF93 aWR0aCgmaW50ZWxfcHN0YXRlLT5iYXNlLnNyYykgPj4gMTY7CiAJaGVpZ2h0ID0gZHJtX3JlY3Rf aGVpZ2h0KCZpbnRlbF9wc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKIAotCWlmIChpbnRlbF9yb3Rh dGlvbl85MF9vcl8yNzAocHN0YXRlLT5yb3RhdGlvbikpCisJaWYgKGRybV9yb3RhdGlvbl85MF9v cl8yNzAocHN0YXRlLT5yb3RhdGlvbikpCiAJCXN3YXAod2lkdGgsIGhlaWdodCk7CiAKIAljcHAg PSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKQEAgLTM1NzUsNyAr MzU3NSw3IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAgICBmYi0+bW9kaWZpZXJbMF0gPT0gSTkxNV9G T1JNQVRfTU9EX1lmX1RJTEVEKSB7CiAJCXVpbnQzMl90IG1pbl9zY2FubGluZXMgPSA0OwogCQl1 aW50MzJfdCB5X3RpbGVfbWluaW11bTsKLQkJaWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChw c3RhdGUtPnJvdGF0aW9uKSkgeworCQlpZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChwc3RhdGUt PnJvdGF0aW9uKSkgewogCQkJaW50IGNwcCA9IChmYi0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JN QVRfTlYxMikgPwogCQkJCWRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDEp IDoKIAkJCQlkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9vbWFwZHJtL29tYXBfcGxhbmUuYwppbmRleCA2NmFjOGM0MGRiMjYuLjE1NDllODM5MzA1 NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9wbGFuZS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfcGxhbmUuYwpAQCAtMTA4LDE2ICsxMDgsMTIg QEAgc3RhdGljIHZvaWQgb21hcF9wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAogCXdpbi5zcmNfeCA9IHN0YXRlLT5zcmNfeCA+PiAxNjsKIAl3aW4uc3JjX3kgPSBz dGF0ZS0+c3JjX3kgPj4gMTY7CiAKLQlzd2l0Y2ggKHN0YXRlLT5yb3RhdGlvbiAmIERSTV9ST1RB VEVfTUFTSykgewotCWNhc2UgRFJNX1JPVEFURV85MDoKLQljYXNlIERSTV9ST1RBVEVfMjcwOgor CWlmIChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHN0YXRlLT5yb3RhdGlvbikpIHsKIAkJd2luLnNy Y193ID0gc3RhdGUtPnNyY19oID4+IDE2OwogCQl3aW4uc3JjX2ggPSBzdGF0ZS0+c3JjX3cgPj4g MTY7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6CisJfSBlbHNlIHsKIAkJd2luLnNyY193ID0gc3RhdGUt PnNyY193ID4+IDE2OwogCQl3aW4uc3JjX2ggPSBzdGF0ZS0+c3JjX2ggPj4gMTY7Ci0JCWJyZWFr OwogCX0KIAogCS8qIHVwZGF0ZSBzY2Fub3V0OiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX2JsZW5kLmggYi9pbmNsdWRlL2RybS9kcm1fYmxlbmQuaAppbmRleCAzNmJhYTE3NWRlOTku LmJiNDkzNDEwMzk2YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2JsZW5kLmgKKysrIGIv aW5jbHVkZS9kcm0vZHJtX2JsZW5kLmgKQEAgLTQ3LDYgKzQ3LDExIEBAIHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlOwogI2RlZmluZSBEUk1fUkVGTEVDVF9ZCUJJVCg1KQogI2RlZmluZSBEUk1fUkVG TEVDVF9NQVNLIChEUk1fUkVGTEVDVF9YIHwgRFJNX1JFRkxFQ1RfWSkKIAorc3RhdGljIGlubGlu ZSBib29sIGRybV9yb3RhdGlvbl85MF9vcl8yNzAodW5zaWduZWQgaW50IHJvdGF0aW9uKQorewor CXJldHVybiByb3RhdGlvbiAmIChEUk1fUk9UQVRFXzkwIHwgRFJNX1JPVEFURV8yNzApOworfQor CiBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpkcm1fbW9kZV9jcmVhdGVfcm90YXRpb25fcHJvcGVydHko c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgc3VwcG9y dGVkX3JvdGF0aW9ucyk7CiB1bnNpZ25lZCBpbnQgZHJtX3JvdGF0aW9uX3NpbXBsaWZ5KHVuc2ln bmVkIGludCByb3RhdGlvbiwKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK