From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 6/6] drm/fb: add support for tiled monitor configurations. Date: Mon, 10 Nov 2014 12:16:16 +1000 Message-ID: <1415585776-31415-7-git-send-email-airlied@gmail.com> References: <1415585776-31415-1-git-send-email-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1415585776-31415-1-git-send-email-airlied@gmail.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, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClRoaXMgYWRkcyBmYmRldi9j b24gc3VwcG9ydCBmb3IgdGlsZWQgbW9uaXRvcnMsIHNvIHRoYXQgd2UKb25seSBzZXQgYSBtb2Rl IG9uIHRoZSBjb3JyZWN0IGhhbGYgb2YgdGhlIG1vbml0b3IsIG9yCnNwYW4gdGhlIHR3byBoYWx2 ZXMgaWYgbmVlZGVkLgoKU2lnbmVkLW9mZi1ieTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0 LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jICAgIHwgMTIyICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2ZiZGV2LmMgfCAgMjUgKysrKysrKy0KIGluY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaCAg ICAgICAgfCAgIDYgKysKIDMgZmlsZXMgY2hhbmdlZCwgMTMwIGluc2VydGlvbnMoKyksIDIzIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCmluZGV4IDMxNDRkYjkuLjA5NWY5ZDUg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwpAQCAtMTA0MiwxOSArMTA0MiwyMSBAQCBzdGF0aWMg aW50IGRybV9mYl9oZWxwZXJfc2luZ2xlX2ZiX3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpm Yl9oZWxwZXIsCiAJY3J0Y19jb3VudCA9IDA7CiAJZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+ Y3J0Y19jb3VudDsgaSsrKSB7CiAJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkZXNpcmVkX21v ZGU7CisJCWludCB4LCB5OwogCQlkZXNpcmVkX21vZGUgPSBmYl9oZWxwZXItPmNydGNfaW5mb1tp XS5kZXNpcmVkX21vZGU7Ci0KKwkJeCA9IGZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLng7CisJCXkg PSBmYl9oZWxwZXItPmNydGNfaW5mb1tpXS55OwogCQlpZiAoZGVzaXJlZF9tb2RlKSB7CiAJCQlp ZiAoZ2FtbWFfc2l6ZSA9PSAwKQogCQkJCWdhbW1hX3NpemUgPSBmYl9oZWxwZXItPmNydGNfaW5m b1tpXS5tb2RlX3NldC5jcnRjLT5nYW1tYV9zaXplOwotCQkJaWYgKGRlc2lyZWRfbW9kZS0+aGRp c3BsYXkgPCBzaXplcy5mYl93aWR0aCkKLQkJCQlzaXplcy5mYl93aWR0aCA9IGRlc2lyZWRfbW9k ZS0+aGRpc3BsYXk7Ci0JCQlpZiAoZGVzaXJlZF9tb2RlLT52ZGlzcGxheSA8IHNpemVzLmZiX2hl aWdodCkKLQkJCQlzaXplcy5mYl9oZWlnaHQgPSBkZXNpcmVkX21vZGUtPnZkaXNwbGF5OwotCQkJ aWYgKGRlc2lyZWRfbW9kZS0+aGRpc3BsYXkgPiBzaXplcy5zdXJmYWNlX3dpZHRoKQotCQkJCXNp emVzLnN1cmZhY2Vfd2lkdGggPSBkZXNpcmVkX21vZGUtPmhkaXNwbGF5OwotCQkJaWYgKGRlc2ly ZWRfbW9kZS0+dmRpc3BsYXkgPiBzaXplcy5zdXJmYWNlX2hlaWdodCkKLQkJCQlzaXplcy5zdXJm YWNlX2hlaWdodCA9IGRlc2lyZWRfbW9kZS0+dmRpc3BsYXk7CisJCQlpZiAoZGVzaXJlZF9tb2Rl LT5oZGlzcGxheSArIHggPCBzaXplcy5mYl93aWR0aCkKKwkJCQlzaXplcy5mYl93aWR0aCA9IGRl c2lyZWRfbW9kZS0+aGRpc3BsYXkgKyB4OworCQkJaWYgKGRlc2lyZWRfbW9kZS0+dmRpc3BsYXkg KyB5IDwgc2l6ZXMuZmJfaGVpZ2h0KQorCQkJCXNpemVzLmZiX2hlaWdodCA9IGRlc2lyZWRfbW9k ZS0+dmRpc3BsYXkgKyB5OworCQkJaWYgKGRlc2lyZWRfbW9kZS0+aGRpc3BsYXkgKyB4ID4gc2l6 ZXMuc3VyZmFjZV93aWR0aCkKKwkJCQlzaXplcy5zdXJmYWNlX3dpZHRoID0gZGVzaXJlZF9tb2Rl LT5oZGlzcGxheSArIHg7CisJCQlpZiAoZGVzaXJlZF9tb2RlLT52ZGlzcGxheSArIHkgPiBzaXpl cy5zdXJmYWNlX2hlaWdodCkKKwkJCQlzaXplcy5zdXJmYWNlX2hlaWdodCA9IGRlc2lyZWRfbW9k ZS0+dmRpc3BsYXkgKyB5OwogCQkJY3J0Y19jb3VudCsrOwogCQl9CiAJfQpAQCAtMTM1Niw2ICsx MzU4LDcgQEAgc3RhdGljIHZvaWQgZHJtX2VuYWJsZV9jb25uZWN0b3JzKHN0cnVjdCBkcm1fZmJf aGVscGVyICpmYl9oZWxwZXIsCiAKIHN0YXRpYyBib29sIGRybV90YXJnZXRfY2xvbmVkKHN0cnVj dCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCQkgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqKm1vZGVzLAorCQkJICAgICAgc3RydWN0IGRybV9mYl9vZmZzZXQgKm9mZnNldHMsCiAJ CQkgICAgICBib29sICplbmFibGVkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAJaW50IGNv dW50LCBpLCBqOwpAQCAtMTQyNywyNyArMTQzMCw4OCBAQCBzdGF0aWMgYm9vbCBkcm1fdGFyZ2V0 X2Nsb25lZChzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCXJldHVybiBmYWxzZTsK IH0KIAorc3RhdGljIGludCBkcm1fZ2V0X3RpbGVfb2Zmc2V0cyhzdHJ1Y3QgZHJtX2ZiX2hlbHBl ciAqZmJfaGVscGVyLAorCQkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICoqbW9kZXMsCisJCQkJ c3RydWN0IGRybV9mYl9vZmZzZXQgKm9mZnNldHMsCisJCQkJaW50IGlkeCwKKwkJCQlpbnQgaF9p ZHgsIGludCB2X2lkeCkKK3sKKwlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jb25uZWN0b3IgKmZiX2hl bHBlcl9jb25uOworCWludCBpOworCWludCBob2Zmc2V0ID0gMCwgdm9mZnNldCA9IDA7CisKKwlm b3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQ7IGkrKykgeworCQlmYl9o ZWxwZXJfY29ubiA9IGZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm9baV07CisJCWlmICghZmJfaGVs cGVyX2Nvbm4tPmNvbm5lY3Rvci0+aGFzX3RpbGUpCisJCQljb250aW51ZTsKKworCQlpZiAoIW1v ZGVzW2ldICYmIChoX2lkeCB8fCB2X2lkeCkpIHsKKwkJCURSTV9ERUJVR19LTVMoIm5vIG1vZGVz IGZvciBjb25uZWN0b3IgdGlsZWQgJWQgJWRcbiIsIGksCisJCQkJICAgICAgZmJfaGVscGVyX2Nv bm4tPmNvbm5lY3Rvci0+YmFzZS5pZCk7CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAoZmJfaGVs cGVyX2Nvbm4tPmNvbm5lY3Rvci0+dGlsZV9oX2xvYyA8IGhfaWR4KQorCQkJaG9mZnNldCArPSBt b2Rlc1tpXS0+aGRpc3BsYXk7CisKKwkJaWYgKGZiX2hlbHBlcl9jb25uLT5jb25uZWN0b3ItPnRp bGVfdl9sb2MgPCB2X2lkeCkKKwkJCXZvZmZzZXQgKz0gbW9kZXNbaV0tPnZkaXNwbGF5OworCX0K KwlvZmZzZXRzW2lkeF0ueCA9IGhvZmZzZXQ7CisJb2Zmc2V0c1tpZHhdLnkgPSB2b2Zmc2V0Owor CURSTV9ERUJVR19LTVMoInJldHVybmVkICVkICVkIGZvciAlZCAlZFxuIiwgaG9mZnNldCwgdm9m ZnNldCwgaF9pZHgsIHZfaWR4KTsKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGJvb2wgZHJtX3Rh cmdldF9wcmVmZXJyZWQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAkJCQkgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKiptb2RlcywKKwkJCQkgc3RydWN0IGRybV9mYl9vZmZzZXQg Km9mZnNldHMsCiAJCQkJIGJvb2wgKmVuYWJsZWQsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsK IAlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jb25uZWN0b3IgKmZiX2hlbHBlcl9jb25uOwogCWludCBp OwotCisJdWludDY0X3QgY29ubl9jb25maWd1cmVkID0gMCwgbWFzazsKKwlpbnQgdGlsZV9wYXNz ID0gMDsKKwltYXNrID0gKDEgPDwgZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQpIC0gMTsKK3Jl dHJ5OgogCWZvciAoaSA9IDA7IGkgPCBmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudDsgaSsrKSB7 CiAJCWZiX2hlbHBlcl9jb25uID0gZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mb1tpXTsKIAotCQlp ZiAoZW5hYmxlZFtpXSA9PSBmYWxzZSkKKwkJaWYgKGNvbm5fY29uZmlndXJlZCAmICgxIDw8IGkp KQorCQkJY29udGludWU7CisKKwkJaWYgKGVuYWJsZWRbaV0gPT0gZmFsc2UpIHsKKwkJCWNvbm5f Y29uZmlndXJlZCB8PSAoMSA8PCBpKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyogZmlyc3Qg cGFzcyBvdmVyIGFsbCB0aGUgdW50aWxlZCBjb25uZWN0b3JzICovCisJCWlmICh0aWxlX3Bhc3Mg PT0gMCAmJiBmYl9oZWxwZXJfY29ubi0+Y29ubmVjdG9yLT5oYXNfdGlsZSkKIAkJCWNvbnRpbnVl OwogCisJCWlmICh0aWxlX3Bhc3MgPT0gMSkgeworCQkJaWYgKGZiX2hlbHBlcl9jb25uLT5jb25u ZWN0b3ItPnRpbGVfaF9sb2MgIT0gMCB8fAorCQkJICAgIGZiX2hlbHBlcl9jb25uLT5jb25uZWN0 b3ItPnRpbGVfdl9sb2MgIT0gMCkKKwkJCQljb250aW51ZTsKKworCQl9IGVsc2UgeworCQkJaWYg KGZiX2hlbHBlcl9jb25uLT5jb25uZWN0b3ItPnRpbGVfaF9sb2MgIT0gdGlsZV9wYXNzIC0xICYm CisJCQkgICAgZmJfaGVscGVyX2Nvbm4tPmNvbm5lY3Rvci0+dGlsZV92X2xvYyAhPSB0aWxlX3Bh c3MgLSAxKQorCQkJLyogaWYgdGhpcyB0aWxlX3Bhc3MgZG9lc24ndCBjb3ZlciBhbnkgb2YgdGhl IHRpbGVzIC0ga2VlcCBnb2luZyAqLworCQkJCWNvbnRpbnVlOworCisJCQkvKiBmaW5kIHRoZSB0 aWxlIG9mZnNldHMgZm9yIHRoaXMgcGFzcyAtIG5lZWQKKwkJCSAgIHRvIGZpbmQgYWxsIHRpbGVz IGxlZnQgYW5kIGFib3ZlICovCisJCQlkcm1fZ2V0X3RpbGVfb2Zmc2V0cyhmYl9oZWxwZXIsIG1v ZGVzLCBvZmZzZXRzLAorCQkJCQkgICAgIGksIGZiX2hlbHBlcl9jb25uLT5jb25uZWN0b3ItPnRp bGVfaF9sb2MsIGZiX2hlbHBlcl9jb25uLT5jb25uZWN0b3ItPnRpbGVfdl9sb2MpOworCQl9CiAJ CURSTV9ERUJVR19LTVMoImxvb2tpbmcgZm9yIGNtZGxpbmUgbW9kZSBvbiBjb25uZWN0b3IgJWRc biIsCiAJCQkgICAgICBmYl9oZWxwZXJfY29ubi0+Y29ubmVjdG9yLT5iYXNlLmlkKTsKIAogCQkv KiBnb3QgZm9yIGNvbW1hbmQgbGluZSBtb2RlIGZpcnN0ICovCiAJCW1vZGVzW2ldID0gZHJtX3Bp Y2tfY21kbGluZV9tb2RlKGZiX2hlbHBlcl9jb25uLCB3aWR0aCwgaGVpZ2h0KTsKIAkJaWYgKCFt b2Rlc1tpXSkgewotCQkJRFJNX0RFQlVHX0tNUygibG9va2luZyBmb3IgcHJlZmVycmVkIG1vZGUg b24gY29ubmVjdG9yICVkXG4iLAotCQkJCSAgICAgIGZiX2hlbHBlcl9jb25uLT5jb25uZWN0b3It PmJhc2UuaWQpOworCQkJRFJNX0RFQlVHX0tNUygibG9va2luZyBmb3IgcHJlZmVycmVkIG1vZGUg b24gY29ubmVjdG9yICVkICVkXG4iLAorCQkJCSAgICAgIGZiX2hlbHBlcl9jb25uLT5jb25uZWN0 b3ItPmJhc2UuaWQsIGZiX2hlbHBlcl9jb25uLT5jb25uZWN0b3ItPnRpbGVfZ3JvdXAgPyBmYl9o ZWxwZXJfY29ubi0+Y29ubmVjdG9yLT50aWxlX2dyb3VwLT5pZCA6IDApOwogCQkJbW9kZXNbaV0g PSBkcm1faGFzX3ByZWZlcnJlZF9tb2RlKGZiX2hlbHBlcl9jb25uLCB3aWR0aCwgaGVpZ2h0KTsK IAkJfQogCQkvKiBObyBwcmVmZXJyZWQgbW9kZXMsIHBpY2sgb25lIG9mZiB0aGUgbGlzdCAqLwpA QCAtMTQ1Nyw2ICsxNTIxLDEzIEBAIHN0YXRpYyBib29sIGRybV90YXJnZXRfcHJlZmVycmVkKHN0 cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCX0KIAkJRFJNX0RFQlVHX0tNUygiZm91 bmQgbW9kZSAlc1xuIiwgbW9kZXNbaV0gPyBtb2Rlc1tpXS0+bmFtZSA6CiAJCQkgICJub25lIik7 CisJCWNvbm5fY29uZmlndXJlZCB8PSAoMSA8PCBpKTsKKwl9CisKKwlpZiAoKGNvbm5fY29uZmln dXJlZCAmIG1hc2spICE9IG1hc2spIHsKKwkJRFJNX0VSUk9SKCJub3QgYWxsIGNvbm5lY3RvcnMg Y29uZmlndXJlZCAgJWQgJWxseCAlbGx4XG4iLCB0aWxlX3Bhc3MsIGNvbm5fY29uZmlndXJlZCwg bWFzayk7CisJCXRpbGVfcGFzcysrOworCQlnb3RvIHJldHJ5OwogCX0KIAlyZXR1cm4gdHJ1ZTsK IH0KQEAgLTE1NDYsNiArMTYxNyw3IEBAIHN0YXRpYyB2b2lkIGRybV9zZXR1cF9jcnRjcyhzdHJ1 Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBm Yl9oZWxwZXItPmRldjsKIAlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICoqY3J0Y3M7CiAJc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKiptb2RlczsKKwlzdHJ1Y3QgZHJtX2ZiX29mZnNldCAqb2Zm c2V0czsKIAlzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2Rlc2V0OwogCWJvb2wgKmVuYWJsZWQ7CiAJ aW50IHdpZHRoLCBoZWlnaHQ7CkBAIC0xNTYwLDkgKzE2MzIsMTEgQEAgc3RhdGljIHZvaWQgZHJt X3NldHVwX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCiAJCQlzaXplb2Yo c3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyAqKSwgR0ZQX0tFUk5FTCk7CiAJbW9kZXMgPSBrY2Fs bG9jKGRldi0+bW9kZV9jb25maWcubnVtX2Nvbm5lY3RvciwKIAkJCXNpemVvZihzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqKSwgR0ZQX0tFUk5FTCk7CisJb2Zmc2V0cyA9IGtjYWxsb2MoZGV2LT5t b2RlX2NvbmZpZy5udW1fY29ubmVjdG9yLAorCQkJICBzaXplb2Yoc3RydWN0IGRybV9mYl9vZmZz ZXQpLCBHRlBfS0VSTkVMKTsKIAllbmFibGVkID0ga2NhbGxvYyhkZXYtPm1vZGVfY29uZmlnLm51 bV9jb25uZWN0b3IsCiAJCQkgIHNpemVvZihib29sKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFjcnRj cyB8fCAhbW9kZXMgfHwgIWVuYWJsZWQpIHsKKwlpZiAoIWNydGNzIHx8ICFtb2RlcyB8fCAhZW5h YmxlZCB8ICFvZmZzZXRzKSB7CiAJCURSTV9FUlJPUigiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVk XG4iKTsKIAkJZ290byBvdXQ7CiAJfQpAQCAtMTU3MiwxNCArMTY0NiwxNiBAQCBzdGF0aWMgdm9p ZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKIAogCWlm ICghKGZiX2hlbHBlci0+ZnVuY3MtPmluaXRpYWxfY29uZmlnICYmCiAJICAgICAgZmJfaGVscGVy LT5mdW5jcy0+aW5pdGlhbF9jb25maWcoZmJfaGVscGVyLCBjcnRjcywgbW9kZXMsCisJCQkJCSAg ICAgICBvZmZzZXRzLAogCQkJCQkgICAgICAgZW5hYmxlZCwgd2lkdGgsIGhlaWdodCkpKSB7CiAJ CW1lbXNldChtb2RlcywgMCwgZGV2LT5tb2RlX2NvbmZpZy5udW1fY29ubmVjdG9yKnNpemVvZiht b2Rlc1swXSkpOwogCQltZW1zZXQoY3J0Y3MsIDAsIGRldi0+bW9kZV9jb25maWcubnVtX2Nvbm5l Y3RvcipzaXplb2YoY3J0Y3NbMF0pKTsKKwkJbWVtc2V0KG9mZnNldHMsIDAsIGRldi0+bW9kZV9j b25maWcubnVtX2Nvbm5lY3RvcipzaXplb2Yob2Zmc2V0c1swXSkpOwogCi0JCWlmICghZHJtX3Rh cmdldF9jbG9uZWQoZmJfaGVscGVyLAotCQkJCSAgICAgICBtb2RlcywgZW5hYmxlZCwgd2lkdGgs IGhlaWdodCkgJiYKLQkJICAgICFkcm1fdGFyZ2V0X3ByZWZlcnJlZChmYl9oZWxwZXIsCi0JCQkJ CSAgbW9kZXMsIGVuYWJsZWQsIHdpZHRoLCBoZWlnaHQpKQorCQlpZiAoIWRybV90YXJnZXRfY2xv bmVkKGZiX2hlbHBlciwgbW9kZXMsIG9mZnNldHMsCisJCQkJICAgICAgIGVuYWJsZWQsIHdpZHRo LCBoZWlnaHQpICYmCisJCSAgICAhZHJtX3RhcmdldF9wcmVmZXJyZWQoZmJfaGVscGVyLCBtb2Rl cywgb2Zmc2V0cywKKwkJCQkJICBlbmFibGVkLCB3aWR0aCwgaGVpZ2h0KSkKIAkJCURSTV9FUlJP UigiVW5hYmxlIHRvIGZpbmQgaW5pdGlhbCBtb2Rlc1xuIik7CiAKIAkJRFJNX0RFQlVHX0tNUygi cGlja2luZyBDUlRDcyBmb3IgJWR4JWQgY29uZmlnXG4iLApAQCAtMTU5OSwxOCArMTY3NSwyMyBA QCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hl bHBlcikKIAlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQ7IGkrKykg ewogCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9IG1vZGVzW2ldOwogCQlzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlcl9jcnRjICpmYl9jcnRjID0gY3J0Y3NbaV07CisJCXN0cnVjdCBkcm1fZmJf b2Zmc2V0ICpvZmZzZXQgPSAmb2Zmc2V0c1tpXTsKIAkJbW9kZXNldCA9ICZmYl9jcnRjLT5tb2Rl X3NldDsKIAogCQlpZiAobW9kZSAmJiBmYl9jcnRjKSB7Ci0JCQlEUk1fREVCVUdfS01TKCJkZXNp cmVkIG1vZGUgJXMgc2V0IG9uIGNydGMgJWRcbiIsCi0JCQkJICAgICAgbW9kZS0+bmFtZSwgZmJf Y3J0Yy0+bW9kZV9zZXQuY3J0Yy0+YmFzZS5pZCk7CisJCQlEUk1fREVCVUdfS01TKCJkZXNpcmVk IG1vZGUgJXMgc2V0IG9uIGNydGMgJWQgKCVkLCVkKVxuIiwKKwkJCQkgICAgICBtb2RlLT5uYW1l LCBmYl9jcnRjLT5tb2RlX3NldC5jcnRjLT5iYXNlLmlkLCBvZmZzZXQtPngsIG9mZnNldC0+eSk7 CiAJCQlmYl9jcnRjLT5kZXNpcmVkX21vZGUgPSBtb2RlOworCQkJZmJfY3J0Yy0+eCA9IG9mZnNl dC0+eDsKKwkJCWZiX2NydGMtPnkgPSBvZmZzZXQtPnk7CiAJCQlpZiAobW9kZXNldC0+bW9kZSkK IAkJCQlkcm1fbW9kZV9kZXN0cm95KGRldiwgbW9kZXNldC0+bW9kZSk7CiAJCQltb2Rlc2V0LT5t b2RlID0gZHJtX21vZGVfZHVwbGljYXRlKGRldiwKIAkJCQkJCQkgICBmYl9jcnRjLT5kZXNpcmVk X21vZGUpOwogCQkJbW9kZXNldC0+Y29ubmVjdG9yc1ttb2Rlc2V0LT5udW1fY29ubmVjdG9ycysr XSA9IGZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm9baV0tPmNvbm5lY3RvcjsKIAkJCW1vZGVzZXQt PmZiID0gZmJfaGVscGVyLT5mYjsKKwkJCW1vZGVzZXQtPnggPSBvZmZzZXQtPng7CisJCQltb2Rl c2V0LT55ID0gb2Zmc2V0LT55OwogCQl9CiAJfQogCkBAIC0xNjI4LDYgKzE3MDksNyBAQCBzdGF0 aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikK IG91dDoKIAlrZnJlZShjcnRjcyk7CiAJa2ZyZWUobW9kZXMpOworCWtmcmVlKG9mZnNldHMpOwog CWtmcmVlKGVuYWJsZWQpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9mYmRldi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwppbmRleCBm NDc1NDE0Li43M2ZhZjg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9m YmRldi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKQEAgLTMyMiw2 ICszMjIsNyBAQCBpbnRlbF9mYl9oZWxwZXJfY3J0YyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJf aGVscGVyLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiBzdGF0aWMgYm9vbCBpbnRlbF9mYl9pbml0 aWFsX2NvbmZpZyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCQkJCSAgICBzdHJ1 Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICoqY3J0Y3MsCiAJCQkJICAgIHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICoqbW9kZXMsCisJCQkJICAgIHN0cnVjdCBkcm1fZmJfb2Zmc2V0ICpvZmZzZXRzLAog CQkJCSAgICBib29sICplbmFibGVkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2OwpAQCAtMzMwLDYgKzMzMSw4IEBAIHN0 YXRpYyBib29sIGludGVsX2ZiX2luaXRpYWxfY29uZmlnKHN0cnVjdCBkcm1fZmJfaGVscGVyICpm Yl9oZWxwZXIsCiAJYm9vbCBmYWxsYmFjayA9IHRydWU7CiAJaW50IG51bV9jb25uZWN0b3JzX2Vu YWJsZWQgPSAwOwogCWludCBudW1fY29ubmVjdG9yc19kZXRlY3RlZCA9IDA7CisJdWludDY0X3Qg Y29ubl9jb25maWd1cmVkID0gMCwgbWFzazsKKwlpbnQgcGFzcyA9IDA7CiAKIAkvKgogCSAqIElm IHRoZSB1c2VyIHNwZWNpZmllZCBhbnkgZm9yY2Ugb3B0aW9ucywganVzdCBiYWlsIGhlcmUKQEAg LTM1NSw3ICszNTgsOCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9mYl9pbml0aWFsX2NvbmZpZyhzdHJ1 Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCQlyZXR1cm4gZmFsc2U7CiAKIAltZW1jcHko c2F2ZV9lbmFibGVkLCBlbmFibGVkLCBkZXYtPm1vZGVfY29uZmlnLm51bV9jb25uZWN0b3IpOwot CisJbWFzayA9ICgxIDw8IGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50KSAtIDE7CityZXRyeToK IAlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQ7IGkrKykgewogCQlz dHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jb25uZWN0b3IgKmZiX2Nvbm47CiAJCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3I7CkBAIC0zNjUsMTIgKzM2OSwxOSBAQCBzdGF0aWMgYm9vbCBpbnRl bF9mYl9pbml0aWFsX2NvbmZpZyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCQlm Yl9jb25uID0gZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mb1tpXTsKIAkJY29ubmVjdG9yID0gZmJf Y29ubi0+Y29ubmVjdG9yOwogCisJCWlmIChjb25uX2NvbmZpZ3VyZWQgJiAoMSA8PCBpKSkKKwkJ CWNvbnRpbnVlOworCisJCWlmIChwYXNzID09IDAgJiYgIWNvbm5lY3Rvci0+aGFzX3RpbGUpCisJ CQljb250aW51ZTsKKwogCQlpZiAoY29ubmVjdG9yLT5zdGF0dXMgPT0gY29ubmVjdG9yX3N0YXR1 c19jb25uZWN0ZWQpCiAJCQludW1fY29ubmVjdG9yc19kZXRlY3RlZCsrOwogCiAJCWlmICghZW5h YmxlZFtpXSkgewogCQkJRFJNX0RFQlVHX0tNUygiY29ubmVjdG9yICVzIG5vdCBlbmFibGVkLCBz a2lwcGluZ1xuIiwKIAkJCQkgICAgICBjb25uZWN0b3ItPm5hbWUpOworCQkJY29ubl9jb25maWd1 cmVkIHw9ICgxIDw8IGkpOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtMzc5LDYgKzM5MCw3IEBA IHN0YXRpYyBib29sIGludGVsX2ZiX2luaXRpYWxfY29uZmlnKHN0cnVjdCBkcm1fZmJfaGVscGVy ICpmYl9oZWxwZXIsCiAJCQlEUk1fREVCVUdfS01TKCJjb25uZWN0b3IgJXMgaGFzIG5vIGVuY29k ZXIgb3IgY3J0Yywgc2tpcHBpbmdcbiIsCiAJCQkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsKIAkJ CWVuYWJsZWRbaV0gPSBmYWxzZTsKKwkJCWNvbm5fY29uZmlndXJlZCB8PSAoMSA8PCBpKTsKIAkJ CWNvbnRpbnVlOwogCQl9CiAKQEAgLTQwNyw4ICs0MTksOCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9m Yl9pbml0aWFsX2NvbmZpZyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCiAJCS8q IHRyeSBmb3IgcHJlZmVycmVkIG5leHQgKi8KIAkJaWYgKCFtb2Rlc1tpXSkgewotCQkJRFJNX0RF QlVHX0tNUygibG9va2luZyBmb3IgcHJlZmVycmVkIG1vZGUgb24gY29ubmVjdG9yICVzXG4iLAot CQkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7CisJCQlEUk1fREVCVUdfS01TKCJsb29raW5nIGZv ciBwcmVmZXJyZWQgbW9kZSBvbiBjb25uZWN0b3IgJXMgJWRcbiIsCisJCQkJICAgICAgY29ubmVj dG9yLT5uYW1lLCBjb25uZWN0b3ItPmhhc190aWxlKTsKIAkJCW1vZGVzW2ldID0gZHJtX2hhc19w cmVmZXJyZWRfbW9kZShmYl9jb25uLCB3aWR0aCwKIAkJCQkJCQkgIGhlaWdodCk7CiAJCX0KQEAg LTQ1MSw2ICs0NjMsMTMgQEAgc3RhdGljIGJvb2wgaW50ZWxfZmJfaW5pdGlhbF9jb25maWcoc3Ry dWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAkJCSAgICAgIG1vZGVzW2ldLT5mbGFncyAm IERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFID8gImkiIDoiIik7CiAKIAkJZmFsbGJhY2sgPSBmYWxz ZTsKKwkJY29ubl9jb25maWd1cmVkIHw9ICgxIDw8IGkpOworCX0KKworCWlmICgoY29ubl9jb25m aWd1cmVkICYgbWFzaykgIT0gbWFzaykgeworCQlEUk1fRVJST1IoIm5vdCBhbGwgY29ubmVjdG9y cyBjb25maWd1cmVkICAlZCAlbGx4ICVsbHhcbiIsIHBhc3MsIGNvbm5fY29uZmlndXJlZCwgbWFz ayk7CisJCXBhc3MrKzsKKwkJZ290byByZXRyeTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oCmlu ZGV4IGJmZDMyOWQuLjdmY2IxZTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxw ZXIuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmgKQEAgLTM0LDkgKzM0LDE0IEBA IHN0cnVjdCBkcm1fZmJfaGVscGVyOwogCiAjaW5jbHVkZSA8bGludXgva2dkYi5oPgogCitzdHJ1 Y3QgZHJtX2ZiX29mZnNldCB7CisJaW50IHgsIHk7Cit9OworCiBzdHJ1Y3QgZHJtX2ZiX2hlbHBl cl9jcnRjIHsKIAlzdHJ1Y3QgZHJtX21vZGVfc2V0IG1vZGVfc2V0OwogCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICpkZXNpcmVkX21vZGU7CisJaW50IHgsIHk7CiB9OwogCiBzdHJ1Y3QgZHJtX2Zi X2hlbHBlcl9zdXJmYWNlX3NpemUgewpAQCAtNzIsNiArNzcsNyBAQCBzdHJ1Y3QgZHJtX2ZiX2hl bHBlcl9mdW5jcyB7CiAJYm9vbCAoKmluaXRpYWxfY29uZmlnKShzdHJ1Y3QgZHJtX2ZiX2hlbHBl ciAqZmJfaGVscGVyLAogCQkJICAgICAgIHN0cnVjdCBkcm1fZmJfaGVscGVyX2NydGMgKipjcnRj cywKIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqKm1vZGVzLAorCQkJICAgICAg IHN0cnVjdCBkcm1fZmJfb2Zmc2V0ICpvZmZzZXRzLAogCQkJICAgICAgIGJvb2wgKmVuYWJsZWQs IGludCB3aWR0aCwgaW50IGhlaWdodCk7CiB9OwogCi0tIAoyLjEuMAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK