From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/4] drm/fb-helper: atomic restore_fbdev_mode().. Date: Wed, 26 Aug 2015 13:47:09 +0200 Message-ID: <20150826114709.GH1367@phenom.ffwll.local> References: <1440531360-20470-1-git-send-email-robdclark@gmail.com> <1440531360-20470-3-git-send-email-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f179.google.com (mail-wi0-f179.google.com [209.85.212.179]) by gabe.freedesktop.org (Postfix) with ESMTPS id 146BA6EA33 for ; Wed, 26 Aug 2015 04:47:14 -0700 (PDT) Received: by widdq5 with SMTP id dq5so12770865wid.0 for ; Wed, 26 Aug 2015 04:47:12 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1440531360-20470-3-git-send-email-robdclark@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Clark Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBBdWcgMjUsIDIwMTUgYXQgMDM6MzU6NThQTSAtMDQwMCwgUm9iIENsYXJrIHdyb3Rl Ogo+IEFkZCBzdXBwb3J0IGZvciB1c2luZyBhdG9taWMgY29kZS1wYXRocyBmb3IgcmVzdG9yZV9m YmRldl9tb2RlKCkuCj4gCj4gU2lnbmVkLW9mZi1ieTogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21h aWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyB8IDEz MSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJt L2RybV9mYl9oZWxwZXIuYyAgICAgfCAgNzQgKysrKysrKysrKysrKysrKysrKysKPiAgaW5jbHVk ZS9kcm0vZHJtX2F0b21pY19oZWxwZXIuaCAgICAgfCAgIDYgKysKPiAgaW5jbHVkZS9kcm0vZHJt X2ZiX2hlbHBlci5oICAgICAgICAgfCAgIDggKysrCj4gIDQgZmlsZXMgY2hhbmdlZCwgMTY2IGlu c2VydGlvbnMoKyksIDUzIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hl bHBlci5jCj4gaW5kZXggZDQzMjM0OC4uZGJjZTU4MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljX2hlbHBlci5jCj4gQEAgLTE1MDIsMjEgKzE1MDIsOSBAQCByZXRyeToKPiAgCQlnb3RvIGZh aWw7Cj4gIAl9Cj4gIAo+IC0JcmV0ID0gZHJtX2F0b21pY19zZXRfY3J0Y19mb3JfcGxhbmUocGxh bmVfc3RhdGUsIE5VTEwpOwo+ICsJcmV0ID0gX19kcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3Bs YW5lKHBsYW5lLCBwbGFuZV9zdGF0ZSk7Cj4gIAlpZiAocmV0ICE9IDApCj4gIAkJZ290byBmYWls Owo+IC0JZHJtX2F0b21pY19zZXRfZmJfZm9yX3BsYW5lKHBsYW5lX3N0YXRlLCBOVUxMKTsKPiAt CXBsYW5lX3N0YXRlLT5jcnRjX3ggPSAwOwo+IC0JcGxhbmVfc3RhdGUtPmNydGNfeSA9IDA7Cj4g LQlwbGFuZV9zdGF0ZS0+Y3J0Y19oID0gMDsKPiAtCXBsYW5lX3N0YXRlLT5jcnRjX3cgPSAwOwo+ IC0JcGxhbmVfc3RhdGUtPnNyY194ID0gMDsKPiAtCXBsYW5lX3N0YXRlLT5zcmNfeSA9IDA7Cj4g LQlwbGFuZV9zdGF0ZS0+c3JjX2ggPSAwOwo+IC0JcGxhbmVfc3RhdGUtPnNyY193ID0gMDsKPiAt Cj4gLQlpZiAocGxhbmUgPT0gcGxhbmUtPmNydGMtPmN1cnNvcikKPiAtCQlzdGF0ZS0+bGVnYWN5 X2N1cnNvcl91cGRhdGUgPSB0cnVlOwo+ICAKPiAgCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0 YXRlKTsKPiAgCWlmIChyZXQgIT0gMCkKPiBAQCAtMTU0Niw2ICsxNTM0LDMyIEBAIGJhY2tvZmY6 Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lKTsK PiAgCj4gKy8qIGp1c3QgdXNlZCBmcm9tIGZiLWhlbHBlciBhbmQgYXRvbWljLWhlbHBlcjogKi8K PiAraW50IF9fZHJtX2F0b21pY19oZWxwZXJfZGlzYWJsZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwKPiArCQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiArewo+ ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9wbGFuZShw bGFuZV9zdGF0ZSwgTlVMTCk7Cj4gKwlpZiAocmV0ICE9IDApCj4gKwkJcmV0dXJuIHJldDsKPiAr Cj4gKwlkcm1fYXRvbWljX3NldF9mYl9mb3JfcGxhbmUocGxhbmVfc3RhdGUsIE5VTEwpOwo+ICsJ cGxhbmVfc3RhdGUtPmNydGNfeCA9IDA7Cj4gKwlwbGFuZV9zdGF0ZS0+Y3J0Y195ID0gMDsKPiAr CXBsYW5lX3N0YXRlLT5jcnRjX2ggPSAwOwo+ICsJcGxhbmVfc3RhdGUtPmNydGNfdyA9IDA7Cj4g KwlwbGFuZV9zdGF0ZS0+c3JjX3ggPSAwOwo+ICsJcGxhbmVfc3RhdGUtPnNyY195ID0gMDsKPiAr CXBsYW5lX3N0YXRlLT5zcmNfaCA9IDA7Cj4gKwlwbGFuZV9zdGF0ZS0+c3JjX3cgPSAwOwo+ICsK PiArCWlmIChwbGFuZS0+Y3J0YyAmJiAocGxhbmUgPT0gcGxhbmUtPmNydGMtPmN1cnNvcikpCj4g KwkJcGxhbmVfc3RhdGUtPnN0YXRlLT5sZWdhY3lfY3Vyc29yX3VwZGF0ZSA9IHRydWU7Cj4gKwo+ ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgdXBkYXRlX291dHB1dF9zdGF0ZShz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAkJCSAgICAgICBzdHJ1Y3QgZHJtX21v ZGVfc2V0ICpzZXQpCj4gIHsKPiBAQCAtMTYyOSw4ICsxNjQzLDYgQEAgaW50IGRybV9hdG9taWNf aGVscGVyX3NldF9jb25maWcoc3RydWN0IGRybV9tb2RlX3NldCAqc2V0KQo+ICB7Cj4gIAlzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBz ZXQtPmNydGM7Cj4gLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gLQlzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlICpwcmltYXJ5X3N0YXRlOwo+ICAJaW50IHJldCA9IDA7Cj4gIAo+ ICAJc3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGNydGMtPmRldik7Cj4gQEAgLTE2Mzks MTcgKzE2NTEsNTQgQEAgaW50IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcoc3RydWN0IGRy bV9tb2RlX3NldCAqc2V0KQo+ICAKPiAgCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGRybV9tb2Rlc2V0 X2xlZ2FjeV9hY3F1aXJlX2N0eChjcnRjKTsKPiAgcmV0cnk6Cj4gLQljcnRjX3N0YXRlID0gZHJt X2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gLQlpZiAoSVNfRVJSKGNydGNf c3RhdGUpKSB7Cj4gLQkJcmV0ID0gUFRSX0VSUihjcnRjX3N0YXRlKTsKPiArCXJldCA9IF9fZHJt X2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZyhzZXQsIHN0YXRlKTsKPiArCWlmIChyZXQgIT0gMCkK PiAgCQlnb3RvIGZhaWw7Cj4gLQl9Cj4gIAo+IC0JcHJpbWFyeV9zdGF0ZSA9IGRybV9hdG9taWNf Z2V0X3BsYW5lX3N0YXRlKHN0YXRlLCBjcnRjLT5wcmltYXJ5KTsKPiAtCWlmIChJU19FUlIocHJp bWFyeV9zdGF0ZSkpIHsKPiAtCQlyZXQgPSBQVFJfRVJSKHByaW1hcnlfc3RhdGUpOwo+ICsJcmV0 ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwo+ICsJaWYgKHJldCAhPSAwKQo+ICAJCWdvdG8g ZmFpbDsKPiAtCX0KPiArCj4gKwkvKiBEcml2ZXIgdGFrZXMgb3duZXJzaGlwIG9mIHN0YXRlIG9u IHN1Y2Nlc3NmdWwgY29tbWl0LiAqLwo+ICsJcmV0dXJuIDA7Cj4gK2ZhaWw6Cj4gKwlpZiAocmV0 ID09IC1FREVBRExLKQo+ICsJCWdvdG8gYmFja29mZjsKPiArCj4gKwlkcm1fYXRvbWljX3N0YXRl X2ZyZWUoc3RhdGUpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK2JhY2tvZmY6Cj4gKwlkcm1fYXRv bWljX3N0YXRlX2NsZWFyKHN0YXRlKTsKPiArCWRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3Rh dGUpOwo+ICsKPiArCS8qCj4gKwkgKiBTb21lb25lIG1pZ2h0IGhhdmUgZXhjaGFuZ2VkIHRoZSBm cmFtZWJ1ZmZlciB3aGlsZSB3ZSBkcm9wcGVkIGxvY2tzCj4gKwkgKiBpbiB0aGUgYmFja29mZiBj b2RlLiBXZSBuZWVkIHRvIGZpeCB1cCB0aGUgZmIgcmVmY291bnQgdHJhY2tpbmcgdGhlCj4gKwkg KiBjb3JlIGRvZXMgZm9yIHVzLgo+ICsJICovCj4gKwljcnRjLT5wcmltYXJ5LT5vbGRfZmIgPSBj cnRjLT5wcmltYXJ5LT5mYjsKPiArCj4gKwlnb3RvIHJldHJ5Owo+ICt9Cj4gK0VYUE9SVF9TWU1C T0woZHJtX2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZyk7Cj4gKwo+ICsvKiBqdXN0IHVzZWQgZnJv bSBmYi1oZWxwZXIgYW5kIGF0b21pYy1oZWxwZXI6ICovCj4gK2ludCBfX2RybV9hdG9taWNfaGVs cGVyX3NldF9jb25maWcoc3RydWN0IGRybV9tb2RlX3NldCAqc2V0LAo+ICsJCXN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRj X3N0YXRlOwo+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHJpbWFyeV9zdGF0ZTsKPiArCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHNldC0+Y3J0YzsKPiArCWludCByZXQ7Cj4gKwo+ICsJY3J0 Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOwo+ICsJaWYg KElTX0VSUihjcnRjX3N0YXRlKSkKPiArCQlyZXR1cm4gUFRSX0VSUihjcnRjX3N0YXRlKTsKPiAr Cj4gKwlwcmltYXJ5X3N0YXRlID0gZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsIGNy dGMtPnByaW1hcnkpOwo+ICsJaWYgKElTX0VSUihwcmltYXJ5X3N0YXRlKSkKPiArCQlyZXR1cm4g UFRSX0VSUihwcmltYXJ5X3N0YXRlKTsKPiAgCj4gIAlpZiAoIXNldC0+bW9kZSkgewo+ICAJCVdB Uk5fT04oc2V0LT5mYik7Cj4gQEAgLTE2NTcsMTMgKzE3MDYsMTMgQEAgcmV0cnk6Cj4gIAo+ICAJ CXJldCA9IGRybV9hdG9taWNfc2V0X21vZGVfZm9yX2NydGMoY3J0Y19zdGF0ZSwgTlVMTCk7Cj4g IAkJaWYgKHJldCAhPSAwKQo+IC0JCQlnb3RvIGZhaWw7Cj4gKwkJCXJldHVybiByZXQ7Cj4gIAo+ ICAJCWNydGNfc3RhdGUtPmFjdGl2ZSA9IGZhbHNlOwo+ICAKPiAgCQlyZXQgPSBkcm1fYXRvbWlj X3NldF9jcnRjX2Zvcl9wbGFuZShwcmltYXJ5X3N0YXRlLCBOVUxMKTsKPiAgCQlpZiAocmV0ICE9 IDApCj4gLQkJCWdvdG8gZmFpbDsKPiArCQkJcmV0dXJuIHJldDsKPiAgCj4gIAkJZHJtX2F0b21p Y19zZXRfZmJfZm9yX3BsYW5lKHByaW1hcnlfc3RhdGUsIE5VTEwpOwo+ICAKPiBAQCAtMTY3NSwx MyArMTcyNCwxNCBAQCByZXRyeToKPiAgCj4gIAlyZXQgPSBkcm1fYXRvbWljX3NldF9tb2RlX2Zv cl9jcnRjKGNydGNfc3RhdGUsIHNldC0+bW9kZSk7Cj4gIAlpZiAocmV0ICE9IDApCj4gLQkJZ290 byBmYWlsOwo+ICsJCXJldHVybiByZXQ7Cj4gIAo+ICAJY3J0Y19zdGF0ZS0+YWN0aXZlID0gdHJ1 ZTsKPiAgCj4gIAlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9wbGFuZShwcmltYXJ5X3N0 YXRlLCBjcnRjKTsKPiAgCWlmIChyZXQgIT0gMCkKPiAtCQlnb3RvIGZhaWw7Cj4gKwkJcmV0dXJu IHJldDsKPiArCj4gIAlkcm1fYXRvbWljX3NldF9mYl9mb3JfcGxhbmUocHJpbWFyeV9zdGF0ZSwg c2V0LT5mYik7Cj4gIAlwcmltYXJ5X3N0YXRlLT5jcnRjX3ggPSAwOwo+ICAJcHJpbWFyeV9zdGF0 ZS0+Y3J0Y195ID0gMDsKPiBAQCAtMTY5NSwzNSArMTc0NSwxMCBAQCByZXRyeToKPiAgY29tbWl0 Ogo+ICAJcmV0ID0gdXBkYXRlX291dHB1dF9zdGF0ZShzdGF0ZSwgc2V0KTsKPiAgCWlmIChyZXQp Cj4gLQkJZ290byBmYWlsOwo+IC0KPiAtCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsK PiAtCWlmIChyZXQgIT0gMCkKPiAtCQlnb3RvIGZhaWw7Cj4gKwkJcmV0dXJuIHJldDsKPiAgCj4g LQkvKiBEcml2ZXIgdGFrZXMgb3duZXJzaGlwIG9mIHN0YXRlIG9uIHN1Y2Nlc3NmdWwgY29tbWl0 LiAqLwo+ICAJcmV0dXJuIDA7Cj4gLWZhaWw6Cj4gLQlpZiAocmV0ID09IC1FREVBRExLKQo+IC0J CWdvdG8gYmFja29mZjsKPiAtCj4gLQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+IC0K PiAtCXJldHVybiByZXQ7Cj4gLWJhY2tvZmY6Cj4gLQlkcm1fYXRvbWljX3N0YXRlX2NsZWFyKHN0 YXRlKTsKPiAtCWRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYoc3RhdGUpOwo+IC0KPiAtCS8qCj4g LQkgKiBTb21lb25lIG1pZ2h0IGhhdmUgZXhjaGFuZ2VkIHRoZSBmcmFtZWJ1ZmZlciB3aGlsZSB3 ZSBkcm9wcGVkIGxvY2tzCj4gLQkgKiBpbiB0aGUgYmFja29mZiBjb2RlLiBXZSBuZWVkIHRvIGZp eCB1cCB0aGUgZmIgcmVmY291bnQgdHJhY2tpbmcgdGhlCj4gLQkgKiBjb3JlIGRvZXMgZm9yIHVz Lgo+IC0JICovCj4gLQljcnRjLT5wcmltYXJ5LT5vbGRfZmIgPSBjcnRjLT5wcmltYXJ5LT5mYjsK PiAtCj4gLQlnb3RvIHJldHJ5Owo+ICB9Cj4gLUVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxw ZXJfc2V0X2NvbmZpZyk7Cj4gIAo+ICAvKioKPiAgICogZHJtX2F0b21pY19oZWxwZXJfY3J0Y19z ZXRfcHJvcGVydHkgLSBoZWxwZXIgZm9yIGNydGMgcHJvcGVydGllcwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9o ZWxwZXIuYwo+IGluZGV4IGJhMTJmNTEuLjk3NDFkNzkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVs cGVyLmMKPiBAQCAtMzgsNiArMzgsOCBAQAo+ICAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4g ICNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9jcnRj X2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KPiArI2luY2x1ZGUgPGRy bS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ICAKPiAgc3RhdGljIGJvb2wgZHJtX2ZiZGV2X2VtdWxh dGlvbiA9IHRydWU7Cj4gIG1vZHVsZV9wYXJhbV9uYW1lZChmYmRldl9lbXVsYXRpb24sIGRybV9m YmRldl9lbXVsYXRpb24sIGJvb2wsIDA2MDApOwo+IEBAIC0zMzQsNiArMzM2LDczIEBAIGludCBk cm1fZmJfaGVscGVyX2RlYnVnX2xlYXZlKHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ICB9Cj4gIEVY UE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9kZWJ1Z19sZWF2ZSk7Cj4gIAo+ICtzdGF0aWMgaW50 IHJlc3RvcmVfZmJkZXZfbW9kZV9hdG9taWMoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBl cikKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2Owo+ICsJ c3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGU7Cj4gKwlpbnQgaSwgcmV0Owo+ICsKPiArCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxv YyhkZXYpOwo+ICsJaWYgKCFzdGF0ZSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwlzdGF0 ZS0+YWNxdWlyZV9jdHggPSBkZXYtPm1vZGVfY29uZmlnLmFjcXVpcmVfY3R4Owo+ICtyZXRyeToK PiArCWRybV9mb3JfZWFjaF9wbGFuZShwbGFuZSwgZGV2KSB7Cj4gKwkJc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Cj4gKwo+ICsJCXBsYW5lX3N0YXRlID0gZHJtX2F0b21pY19n ZXRfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKPiArCQlpZiAoSVNfRVJSKHBsYW5lX3N0YXRl KSkgewo+ICsJCQlyZXQgPSBQVFJfRVJSKHBsYW5lX3N0YXRlKTsKPiArCQkJZ290byBmYWlsOwo+ ICsJCX0KPiArCj4gKwkJLyogcmVzZXQgcm90YXRpb246ICovCgpDb21tZW50IGlzIHN1cGVyZmxv dXMgaW1vLiBBbmQgd2UgbmVlZCB0byBjaGVjayBmb3Igcm90YXRpb25fcHJvcGVydHkgaGVyZQps aWtlIGZvciB0aGUgbGVnYWN5IHBhdGggb3RoZXJ3aXNlIHdlJ2xsIGJsb3cgdXAgaWYgdGhhdCdz IG5vdCBzZXQgdXAuCgo+ICsJCXJldCA9IGRybV9hdG9taWNfcGxhbmVfc2V0X3Byb3BlcnR5KHBs YW5lLCBwbGFuZV9zdGF0ZSwKPiArCQkJCWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVy dHksCj4gKwkJCQlCSVQoRFJNX1JPVEFURV8wKSk7Cj4gKwkJaWYgKHJldCAhPSAwKQo+ICsJCQln b3RvIGZhaWw7Cj4gKwo+ICsJCS8qIGRpc2FibGUgbm9uLXByaW1hcnk6ICovCj4gKwkJaWYgKHBs YW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCj4gKwkJCWNvbnRpbnVlOwo+ICsK PiArCQlyZXQgPSBfX2RybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUocGxhbmUsIHBsYW5l X3N0YXRlKTsKPiArCQlpZiAocmV0ICE9IDApCj4gKwkJCWdvdG8gZmFpbDsKPiArCX0KPiArCj4g Kwlmb3IoaSA9IDA7IGkgPCBmYl9oZWxwZXItPmNydGNfY291bnQ7IGkrKykgewo+ICsJCXN0cnVj dCBkcm1fbW9kZV9zZXQgKm1vZGVfc2V0ID0gJmZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVf c2V0Owo+ICsKPiArCQlyZXQgPSBfX2RybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcobW9kZV9z ZXQsIHN0YXRlKTsKPiArCQlpZiAocmV0ICE9IDApCj4gKwkJCWdvdG8gZmFpbDsKPiArCX0KPiAr Cj4gKwlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7Cj4gKwlpZiAocmV0ICE9IDApCj4g KwkJZ290byBmYWlsOwo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArZmFpbDoKPiArCWlmIChyZXQg PT0gLUVERUFETEspCj4gKwkJZ290byBiYWNrb2ZmOwo+ICsKPiArCWRybV9hdG9taWNfc3RhdGVf ZnJlZShzdGF0ZSk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArCj4gK2JhY2tvZmY6Cj4gKwlkcm1f YXRvbWljX3N0YXRlX2NsZWFyKHN0YXRlKTsKPiArCWRybV9hdG9taWNfbGVnYWN5X2JhY2tvZmYo c3RhdGUpOwo+ICsKPiArCWdvdG8gcmV0cnk7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgcmVzdG9y ZV9mYmRldl9tb2RlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCj4gIHsKPiAgCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsKPiBAQCAtMzQyLDYgKzQxMSw5 IEBAIHN0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpm Yl9oZWxwZXIpCj4gIAo+ICAJZHJtX3dhcm5fb25fbW9kZXNldF9ub3RfYWxsX2xvY2tlZChkZXYp Owo+ICAKPiArCWlmIChmYl9oZWxwZXItPmF0b21pYykKPiArCQlyZXR1cm4gcmVzdG9yZV9mYmRl dl9tb2RlX2F0b21pYyhmYl9oZWxwZXIpOwo+ICsKPiAgCWRybV9mb3JfZWFjaF9wbGFuZShwbGFu ZSwgZGV2KSB7Cj4gIAkJaWYgKHBsYW5lLT50eXBlICE9IERSTV9QTEFORV9UWVBFX1BSSU1BUlkp Cj4gIAkJCWRybV9wbGFuZV9mb3JjZV9kaXNhYmxlKHBsYW5lKTsKPiBAQCAtNjQ0LDYgKzcxNiw4 IEBAIGludCBkcm1fZmJfaGVscGVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlp Kys7Cj4gIAl9Cj4gIAo+ICsJZmJfaGVscGVyLT5hdG9taWMgPSAhIWRybV9jb3JlX2NoZWNrX2Zl YXR1cmUoZGV2LCBEUklWRVJfQVRPTUlDKTsKPiArCj4gIAlyZXR1cm4gMDsKPiAgb3V0X2ZyZWU6 Cj4gIAlkcm1fZmJfaGVscGVyX2NydGNfZnJlZShmYl9oZWxwZXIpOwo+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pY19o ZWxwZXIuaAo+IGluZGV4IDExMjY2ZDE0Li44OGMwZWYzIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUv ZHJtL2RybV9hdG9taWNfaGVscGVyLmgKPiArKysgYi9pbmNsdWRlL2RybS9kcm1fYXRvbWljX2hl bHBlci5oCj4gQEAgLTMwLDYgKzMwLDggQEAKPiAgCj4gICNpbmNsdWRlIDxkcm0vZHJtX2NydGMu aD4KPiAgCj4gK3N0cnVjdCBkcm1fYXRvbWljX3N0YXRlOwo+ICsKPiAgaW50IGRybV9hdG9taWNf aGVscGVyX2NoZWNrX21vZGVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJCXN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4gIGludCBkcm1fYXRvbWljX2hlbHBlcl9jaGVj a19wbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiBAQCAtNzIsNyArNzQsMTEgQEAgaW50 IGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK PiAgCQkJCSAgIHVpbnQzMl90IHNyY194LCB1aW50MzJfdCBzcmNfeSwKPiAgCQkJCSAgIHVpbnQz Ml90IHNyY193LCB1aW50MzJfdCBzcmNfaCk7Cj4gIGludCBkcm1fYXRvbWljX2hlbHBlcl9kaXNh YmxlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKTsKPiAraW50IF9fZHJtX2F0b21pY19o ZWxwZXJfZGlzYWJsZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQlzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7Cj4gIGludCBkcm1fYXRvbWljX2hlbHBlcl9z ZXRfY29uZmlnKHN0cnVjdCBkcm1fbW9kZV9zZXQgKnNldCk7Cj4gK2ludCBfX2RybV9hdG9taWNf aGVscGVyX3NldF9jb25maWcoc3RydWN0IGRybV9tb2RlX3NldCAqc2V0LAo+ICsJCXN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4gIAo+ICBpbnQgZHJtX2F0b21pY19oZWxwZXJfY3J0 Y19zZXRfcHJvcGVydHkoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQkJCXN0cnVjdCBkcm1f cHJvcGVydHkgKnByb3BlcnR5LAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZmJfaGVs cGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmgKPiBpbmRleCA2MjU0MTM2Li5jYzNk ODIwIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAo+ICsrKyBiL2lu Y2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAo+IEBAIC0xMTcsNiArMTE3LDEyIEBAIHN0cnVjdCBk cm1fZmJfaGVscGVyX2Nvbm5lY3RvciB7Cj4gICAqIEBwc2V1ZG9fcGFsZXR0ZTogZmFrZSBwYWxl dHRlIG9mIDE2IGNvbG9ycwo+ICAgKiBAa2VybmVsX2ZiX2xpc3Q6IGxpc3RfaGVhZCBpbiBrZXJu ZWxfZmJfaGVscGVyX2xpc3QKPiAgICogQGRlbGF5ZWRfaG90cGx1Zzogd2FzIHRoZXJlIGEgaG90 cGx1ZyB3aGlsZSBrbXMgbWFzdGVyIGFjdGl2ZT8KPiArICogQGF0b21pYzogdXNlIGF0b21pYyB1 cGRhdGVzIGZvciByZXN0b3JlX2ZiZGV2X21vZGUoKSwgZXRjLiAgVGhpcwo+ICsgKiAgICAgICAg ICBkZWZhdWx0cyB0byB0cnVlIGlmIGRyaXZlciBoYXMgRFJJVkVSX0FUT01JQyBmZWF0dXJlCj4g KyAqICAgICAgICAgIGZsYWcsIGJ1dCBkcml2ZXJzIGNhbiBvdmVycmlkZSBpdCB0byB0cnVlIGFm dGVyCj4gKyAqICAgICAgICAgIGRybV9mYl9oZWxwZXJfaW5pdCgpIGlmIHRoZXkgc3VwcG9ydCBh dG9taWMgbW9kZXNldAo+ICsgKiAgICAgICAgICBidXQgZG8gbm90IHlldCBhZHZlcnRpc2UgRFJJ VkVSX0FUT01JQyAobm90ZSB0aGF0Cj4gKyAqICAgICAgICAgIGZiLWhlbHBlciBkb2VzIG5vdCBy ZXF1aXJlIEFTWU5DIGNvbW1pdHMpLgoKTmV3IGtlcm5lbGRvYyBpbiA0LjMgKGFscmVhZHkgaW4g bGludXgtbmV4dCBhbmQgZHJtLWludGVsLW5pZ2h0bHkpIGFsbG93cwp5b3UgdG8gcHVzaCB0aGF0 IHJpZ2h0IHRvIHRoZSBzdHJ1Y3QgbWVtYmVyLCB3aGljaCBpcyBpbW8gYmV0dGVyIGZvcgpsb25n ZXIgZXhwbGFuYXRpb25zIGxpa2UgdGhpczoKCj4gICAqLwo+ICBzdHJ1Y3QgZHJtX2ZiX2hlbHBl ciB7Cj4gIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKPiBAQCAtMTM0LDYgKzE0MCw4IEBA IHN0cnVjdCBkcm1fZmJfaGVscGVyIHsKPiAgCS8qIHdlIGdvdCBhIGhvdHBsdWcgYnV0IGZiZGV2 IHdhc24ndCBydW5uaW5nIHRoZSBjb25zb2xlCj4gIAkgICBkZWxheSB1bnRpbCBuZXh0IHNldF9w YXIgKi8KPiAgCWJvb2wgZGVsYXllZF9ob3RwbHVnOwoKCS8qKgoJICogQGF0b21pYzoKCSAqCgkg KiBVc2UgYXRvbWljIHVwZGF0ZXMgZm9yIHJlc3RvcmVfZmJkZXZfbW9kZSgpLCBldGMuICBUaGlz IGRlZmF1bHRzIHRvCgkgKiB0cnVlIGlmIGRyaXZlciBoYXMgRFJJVkVSX0FUT01JQyBmZWF0dXJl IGZsYWcsIGJ1dCBkcml2ZXJzIGNhbiBvdmVycmlkZQoJICogaXQgdG8gdHJ1ZSBhZnRlciBkcm1f ZmJfaGVscGVyX2luaXQoKSBpZiB0aGV5IHN1cHBvcnQgYXRvbWljIG1vZGVzZXQKCSAqIGJ1dCBk byBub3QgeWV0IGFkdmVydGlzZSBEUklWRVJfQVRPTUlDIChub3RlIHRoYXQgZmItaGVscGVyIGRv ZXMgbm90CgkgKiByZXF1aXJlIEFTWU5DIGNvbW1pdHMpLgoJICovCglib29sIGF0b21pYzsKCklt byB0aGF0IGxvb2tzIHByZXR0aWVyLgotRGFuaWVsCgo+ICB9Owo+ICAKPiAgI2lmZGVmIENPTkZJ R19EUk1fRkJERVZfRU1VTEFUSU9OCj4gLS0gCj4gMi40LjMKPiAKCi0tIApEYW5pZWwgVmV0dGVy ClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5j aApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=