From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] Fix resume from suspend to RAM on IBM X30 Date: Tue, 26 May 2015 09:27:10 +0200 Message-ID: <20150526072710.GE12971@phenom.ffwll.local> References: <555F7DAC.1060608@math.tu-berlin.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f44.google.com (mail-wg0-f44.google.com [74.125.82.44]) by gabe.freedesktop.org (Postfix) with ESMTP id 2D7F66E2A1 for ; Tue, 26 May 2015 00:24:43 -0700 (PDT) Received: by wgbgq6 with SMTP id gq6so88573879wgb.3 for ; Tue, 26 May 2015 00:24:42 -0700 (PDT) Content-Disposition: inline In-Reply-To: <555F7DAC.1060608@math.tu-berlin.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Thomas Richter Cc: Intel Graphics Development List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBNYXkgMjIsIDIwMTUgYXQgMDk6MDQ6MTJQTSArMDIwMCwgVGhvbWFzIFJpY2h0ZXIg d3JvdGU6Cj4gSGkgZm9sa3MsCj4gCj4gdGhpcyBpcyByZS1zdWJtaXR0aW5nIHRoZSBpbnRlbCBE Vk8gcGF0Y2ggdGhhdCBjbG9zZXMgYnVnICM0OTgzOCwgbmFtZWx5Cj4gdGhhdCByZXN1bWluZyBm cm9tIHN1c3BlbmQtdG8tUkFNIG9uIHRoZSBJQk0geDMwIGxlYXZlcyB0aGUgbGFwdG9wIHdpdGgK PiBhIGJsYW5rIHNjcmVlbi4gU2VlIHRoZSBhdHRhY2hlZCBwYXRjaCBmb3IgZGV0YWlscy4KPiAK PiBQbGVhc2UgbGV0IG1lIGtub3cgd2hhdCBlbHNlIGlzIG1pc3NpbmcgdG8gbWFrZSB0aGlzIHBh dGNoIGdvIGludG8gdGhlCj4ga2VybmVsLiBJdCBoYXMgYmVlbiB0ZXN0ZWQgYnkgU3RlZmFuIE1v bm5pZXIsIHNlZQo+IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lk PTQ5ODM4Cj4gZm9yIGRldGFpbHMuCj4gCj4gVGhhbmtzLAo+IAlUaG9tYXMKCj4gRnJvbSA4ZWEz MDdjYzIwM2QyMTdjYjY1MTNhY2UwNDU2NzhkMDZjMjNhZDYxIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQo+IEZyb206IFRob21hcyBSaWNodGVyIDx0aG9yQG1hdGgudHUtYmVybGluLmRlPgo+IERh dGU6IEZyaSwgMjIgTWF5IDIwMTUgMjA6NTU6NTQgKzAyMDAKPiBTdWJqZWN0OiBbUEFUQ0ggMS8x XSBGaXhlcyBmb3IgSUJNIHgzMCBzdXNwZW5kIHRvIHJhbS4KPiAKPiBUaGlzIHBhdGNoIGZpeGVz IHRoZSByZXN1bWUgZnJvbSBzdXNwZW5kIG9uIHRoZSBYMzAKPiB0aGlua3BhZC4gVGhlIGJ1ZyBp cyBkdWUgdG8gdGhlIFgzMCBiaW9zIGZhaWxpbmcgdG8KPiByZXN0b3JlIHRoZSBJVkNIIChEVk8p IHJlZ2lzdGVycywgc3BlY2lmaWNhbGx5IHRoZSBQTEwKPiByZWdpc3RlcnMuCj4gCj4gVGhpcyBw YXRjaCBtYWtlcyBhIGJhY2t1cCBvZiB0aGUgaW50ZXJuYWwgRFZPIHJlZ2lzdGVycyB1cG9uCj4g aW5pdGlhbGl6YXRpb24gLSBhc3N1bWluZyB0aGF0IHRoZSBCSU9TIHNldHMgdXAgZXZlcnl0aGlu Zwo+IGNvcnJlY3RseS4gVGhlIHZhbHVlcyBhcmUgdGhlbiByZXN0b3JlZCB3aGVuZXZlciB0aGUg bW9kZQo+IGhhcyB0byBiZSByZXN0b3JlZC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgUmlj aHRlciA8dGhvckBtYXRoLnR1LWJlcmxpbi5kZT4KCk9rIHBhdGNoIGZvcm1hdCBsb29rcyBnb29k IG5vdywgYnV0IHVuZm9ydHVuYXRlbHkgdGhleSBoYXZlIHByZXR0eSBoZWF2eQpjb25mbGljdHMg d2l0aCBkcm0taW50ZWwtbmlnaHRseS4gQ2FuIHlvdSBwbGVhc2UgcmViYXNlIG9udG8gbGF0ZXN0 CnVwc3RyZWFtIGFuZCByZXN1Ym1pdD8gQXBwbGllcyB0byBib3RoIHBhdGNoZXMuCgpPbmUgbW9y ZSBjb21tZW50IGJlbG93LgoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZHZvX2l2Y2gu YyB8ICAxMTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCj4gIDEgZmls ZSBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZHZvX2l2Y2guYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2R2b19pdmNoLmMKPiBpbmRleCBiYWFmNjViLi5kNjBlZGY4IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2R2b19pdmNoLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kdm9faXZjaC5jCj4gQEAgLTIyLDYgKzIyLDcgQEAKPiAgICoKPiAgICogQXV0aG9yczoKPiAg ICogICAgRXJpYyBBbmhvbHQgPGVyaWNAYW5ob2x0Lm5ldD4KPiArICogICAgVGhvbWFzIFJpY2h0 ZXIgPHRob3JAbWF0aC50dS1iZXJsaW4uZGU+Cj4gICAqCj4gICAqLwo+ICAKPiBAQCAtNTksNiAr NjAsOCBAQAo+ICAjIGRlZmluZSBWUjAxX0RWT19CWVBBU1NfRU5BQkxFCQkoMSA8PCAxKQo+ICAv KiogRW5hYmxlcyB0aGUgRFZPIGNsb2NrICovCj4gICMgZGVmaW5lIFZSMDFfRFZPX0VOQUJMRQkJ KDEgPDwgMCkKPiArLyoqIEVuYWJsZXMgZGl0aGVyaW5nICovCj4gKyMgZGVmaW5lIFZSMDFfRElU SEVSX0VOQUJMRSAgICAgICAgICAgICAoMSA8PCA0KQo+ICAKPiAgLyoKPiAgICogTENEIEludGVy ZmFjZSBGb3JtYXQKPiBAQCAtODMsNyArODYsNyBAQAo+ICAvKgo+ICAgKiBMQ0QgVmVydGljYWwg RGlzcGxheSBTaXplCj4gICAqLwo+IC0jZGVmaW5lIFZSMjEJMHgyMAo+ICsjZGVmaW5lIFZSMjEJ MHgyMQo+ICAKPiAgLyoKPiAgICogUGFuZWwgcG93ZXIgZG93biBzdGF0dXMKPiBAQCAtMTQ4LDE2 ICsxNTEsNDEgQEAKPiAgIyBkZWZpbmUgVlI4Rl9QT1dFUl9NQVNLCQkoMHgzYykKPiAgIyBkZWZp bmUgVlI4Rl9QT1dFUl9QT1MJCQkoMikKPiAgCj4gKy8qIFNvbWUgQmlvcyBpbXBsZW1lbnRhdGlv bnMgZG8gbm90IHJlc3RvcmUgdGhlIERWTyBzdGF0ZSB1cG9uCj4gKyAqIHJlc3VtZSBmcm9tIHN0 YW5kYnkuIFRodXMsIHRoaXMgZHJpdmVyIGhhcyB0byBoYW5kbGUgaXQKPiArICogaW5zdGVhZC4g VGhlIGZvbGxvd2luZyBsaXN0IGNvbnRhaW5zIGFsbCByZWdpc3RlcnMgdGhhdAo+ICsgKiByZXF1 aXJlIHNhdmluZy4KPiArICovCj4gK3N0YXRpYyBjb25zdCB1aW50MTZfdCBiYWNrdXBfYWRkcmVz c2VzW10gPSB7Cj4gKwkweDExLCAweDEyLAo+ICsJMHgxOCwgMHgxOSwgMHgxYSwgMHgxZiwKPiAr CTB4MjAsIDB4MjEsIDB4MjIsIDB4MjMsIDB4MjQsIDB4MjUsIDB4MjYsIDB4MjcsCj4gKwkweDMx LCAweDMyLCAweDMzLCAweDM0LCAweDM1LCAweDM2LCAweDM3LAo+ICsJMHg4ZSwgMHg4ZiwKPiAr CTB4MTAJCS8qIHRoaXMgbXVzdCBjb21lIGxhc3QgKi8KPiArfTsKPiArCj4gIAo+ICBzdHJ1Y3Qg aXZjaF9wcml2IHsKPiAgCWJvb2wgcXVpZXQ7Cj4gIAo+ICAJdWludDE2X3Qgd2lkdGgsIGhlaWdo dDsKPiArCj4gKwkvKiBSZWdpc3RlciBiYWNrdXAgKi8KPiArCj4gKwl1aW50MTZfdCByZWdfYmFj a3VwW0FSUkFZX1NJWkUoYmFja3VwX2FkZHJlc3NlcyldOwo+ICB9Owo+ICAKPiAgCj4gIHN0YXRp YyB2b2lkIGl2Y2hfZHVtcF9yZWdzKHN0cnVjdCBpbnRlbF9kdm9fZGV2aWNlICpkdm8pOwo+ICAK PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfZ21idXMgKgo+ICt0b19pbnRlbF9nbWJ1cyhz dHJ1Y3QgaTJjX2FkYXB0ZXIgKmkyYykKPiArewo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihpMmMs IHN0cnVjdCBpbnRlbF9nbWJ1cywgYWRhcHRlcik7Cj4gK30KPiArCj4gKwo+ICAvKioKPiAgICog UmVhZHMgYSByZWdpc3RlciBvbiB0aGUgaXZjaC4KPiAgICoKPiBAQCAtMTY3LDYgKzE5NSw3IEBA IHN0YXRpYyBib29sIGl2Y2hfcmVhZChzdHJ1Y3QgaW50ZWxfZHZvX2RldmljZSAqZHZvLCBpbnQg YWRkciwgdWludDE2X3QgKmRhdGEpCj4gIHsKPiAgCXN0cnVjdCBpdmNoX3ByaXYgKnByaXYgPSBk dm8tPmRldl9wcml2Owo+ICAJc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyID0gZHZvLT5pMmNf YnVzOwo+ICsJc3RydWN0IGludGVsX2dtYnVzICpidXMgPSB0b19pbnRlbF9nbWJ1cyhhZGFwdGVy KTsKPiAgCXU4IG91dF9idWZbMV07Cj4gIAl1OCBpbl9idWZbMl07Cj4gIAo+IEBAIC0xOTEsMTcg KzIyMCwxOSBAQCBzdGF0aWMgYm9vbCBpdmNoX3JlYWQoc3RydWN0IGludGVsX2R2b19kZXZpY2Ug KmR2bywgaW50IGFkZHIsIHVpbnQxNl90ICpkYXRhKQo+ICAJfTsKPiAgCj4gIAlvdXRfYnVmWzBd ID0gYWRkcjsKPiAtCj4gKwlidXMtPmZvcmNlX2JpdCsrOyAvKiB0aGUgSVZDSCByZXF1aXJlcyBi aXQtYmFuZ2luZyAqLwo+ICAJaWYgKGkyY190cmFuc2ZlcihhZGFwdGVyLCBtc2dzLCAzKSA9PSAz KSB7Cj4gIAkJKmRhdGEgPSAoaW5fYnVmWzFdIDw8IDgpIHwgaW5fYnVmWzBdOwo+ICsJCWJ1cy0+ Zm9yY2VfYml0LS07Cj4gIAkJcmV0dXJuIHRydWU7Cj4gLQl9Owo+ICsJfQo+ICAKPiAgCWlmICgh cHJpdi0+cXVpZXQpIHsKPiAgCQlEUk1fREVCVUdfS01TKCJVbmFibGUgdG8gcmVhZCByZWdpc3Rl ciAweCUwMnggZnJvbSAiCj4gIAkJCQkiJXM6JTAyeC5cbiIsCj4gIAkJCSAgYWRkciwgYWRhcHRl ci0+bmFtZSwgZHZvLT5zbGF2ZV9hZGRyKTsKPiAgCX0KPiArCWJ1cy0+Zm9yY2VfYml0LS07CgpU aGVyZSdzIG5vIGdtYnVzIG9uIGk4MzBNLCB0aGlzIHNob3VsZCBiZSBhIG5vLW9wLiBBcmUgeW91 IHN1cmUgdGhpcyBpcwpyZXF1aXJlZD8gQWxzbyB0aGUgY29ycmVjdCB3YXkgdG8gZG8gdGhpcyBp cyBieSBjYWxsaW5nCmludGVsX2dtYnVzX2ZvcmNlX2JpdC4KLURhbmllbAoKPiAgCXJldHVybiBm YWxzZTsKPiAgfQo+ICAKPiBAQCAtMjEwLDYgKzI0MSw3IEBAIHN0YXRpYyBib29sIGl2Y2hfd3Jp dGUoc3RydWN0IGludGVsX2R2b19kZXZpY2UgKmR2bywgaW50IGFkZHIsIHVpbnQxNl90IGRhdGEp Cj4gIHsKPiAgCXN0cnVjdCBpdmNoX3ByaXYgKnByaXYgPSBkdm8tPmRldl9wcml2Owo+ICAJc3Ry dWN0IGkyY19hZGFwdGVyICphZGFwdGVyID0gZHZvLT5pMmNfYnVzOwo+ICsJc3RydWN0IGludGVs X2dtYnVzICpidXMgPSB0b19pbnRlbF9nbWJ1cyhhZGFwdGVyKTsKPiAgCXU4IG91dF9idWZbM107 Cj4gIAlzdHJ1Y3QgaTJjX21zZyBtc2cgPSB7Cj4gIAkJLmFkZHIgPSBkdm8tPnNsYXZlX2FkZHIs Cj4gQEAgLTIyMSwxNSArMjUzLDE5IEBAIHN0YXRpYyBib29sIGl2Y2hfd3JpdGUoc3RydWN0IGlu dGVsX2R2b19kZXZpY2UgKmR2bywgaW50IGFkZHIsIHVpbnQxNl90IGRhdGEpCj4gIAlvdXRfYnVm WzBdID0gYWRkcjsKPiAgCW91dF9idWZbMV0gPSBkYXRhICYgMHhmZjsKPiAgCW91dF9idWZbMl0g PSBkYXRhID4+IDg7Cj4gKwlidXMtPmZvcmNlX2JpdCsrOyAvKiBiaXQtYmFuZ2luZyByZXF1aXJl ZCBmb3IgdGhlIElWQ0ggKi8KPiAgCj4gLQlpZiAoaTJjX3RyYW5zZmVyKGFkYXB0ZXIsICZtc2cs IDEpID09IDEpCj4gKwlpZiAoaTJjX3RyYW5zZmVyKGFkYXB0ZXIsICZtc2csIDEpID09IDEpIHsK PiArCQlidXMtPmZvcmNlX2JpdC0tOwo+ICAJCXJldHVybiB0cnVlOwo+ICsJfQo+ICAKPiAgCWlm ICghcHJpdi0+cXVpZXQpIHsKPiAgCQlEUk1fREVCVUdfS01TKCJVbmFibGUgdG8gd3JpdGUgcmVn aXN0ZXIgMHglMDJ4IHRvICVzOiVkLlxuIiwKPiAgCQkJICBhZGRyLCBhZGFwdGVyLT5uYW1lLCBk dm8tPnNsYXZlX2FkZHIpOwo+ICAJfQo+ICAKPiArCWJ1cy0+Zm9yY2VfYml0LS07Cj4gIAlyZXR1 cm4gZmFsc2U7Cj4gIH0KPiAgCj4gQEAgLTIzOSw2ICsyNzUsNyBAQCBzdGF0aWMgYm9vbCBpdmNo X2luaXQoc3RydWN0IGludGVsX2R2b19kZXZpY2UgKmR2bywKPiAgewo+ICAJc3RydWN0IGl2Y2hf cHJpdiAqcHJpdjsKPiAgCXVpbnQxNl90IHRlbXA7Cj4gKwlpbnQgaTsKPiAgCj4gIAlwcml2ID0g a3phbGxvYyhzaXplb2Yoc3RydWN0IGl2Y2hfcHJpdiksIEdGUF9LRVJORUwpOwo+ICAJaWYgKHBy aXYgPT0gTlVMTCkKPiBAQCAtMjY2LDYgKzMwMywxNCBAQCBzdGF0aWMgYm9vbCBpdmNoX2luaXQo c3RydWN0IGludGVsX2R2b19kZXZpY2UgKmR2bywKPiAgCWl2Y2hfcmVhZChkdm8sIFZSMjAsICZw cml2LT53aWR0aCk7Cj4gIAlpdmNoX3JlYWQoZHZvLCBWUjIxLCAmcHJpdi0+aGVpZ2h0KTsKPiAg Cj4gKwkvKiBNYWtlIGEgYmFja3VwIG9mIHRoZSByZWdpc3RlcnMgdG8gYmUgYWJsZSB0byByZXN0 b3JlIHRoZW0KPiArCSAqIHVwb24gc3VzcGVuZC4KPiArCSAqLwo+ICsJZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUoYmFja3VwX2FkZHJlc3Nlcyk7IGkrKykKPiArCQlpdmNoX3JlYWQoZHZvLCBi YWNrdXBfYWRkcmVzc2VzW2ldLCBwcml2LT5yZWdfYmFja3VwICsgaSk7Cj4gKwo+ICsJaXZjaF9k dW1wX3JlZ3MoZHZvKTsKPiArCj4gIAlyZXR1cm4gdHJ1ZTsKPiAgCj4gIG91dDoKPiBAQCAtMjg3 LDEyICszMzIsMzEgQEAgc3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzIGl2Y2hfbW9kZV92YWxp ZChzdHJ1Y3QgaW50ZWxfZHZvX2RldmljZSAqZHZvLAo+ICAJcmV0dXJuIE1PREVfT0s7Cj4gIH0K PiAgCj4gKy8qIFJlc3RvcmUgdGhlIERWTyByZWdpc3RlcnMgYWZ0ZXIgYSByZXN1bWUKPiArICog ZnJvbSBSQU0uIFJlZ2lzdGVycyBoYXZlIGJlZW4gc2F2ZWQgZHVyaW5nCj4gKyAqIHRoZSBpbml0 aWFsaXphdGlvbi4KPiArICovCj4gK3N0YXRpYyB2b2lkIGl2Y2hfcmVzZXQoc3RydWN0IGludGVs X2R2b19kZXZpY2UgKmR2bykKPiArewo+ICsJc3RydWN0IGl2Y2hfcHJpdiAqcHJpdiA9IGR2by0+ ZGV2X3ByaXY7Cj4gKwlpbnQgaTsKPiArCj4gKwlEUk1fREVCVUdfS01TKCJSZXNldHRpbmcgdGhl IElWQ0ggcmVnaXN0ZXJzXG4iKTsKPiArCj4gKwlpdmNoX3dyaXRlKGR2bywgVlIxMCwgMHgwMDAw KTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShiYWNrdXBfYWRkcmVzc2VzKTsg aSsrKQo+ICsJCWl2Y2hfd3JpdGUoZHZvLCBiYWNrdXBfYWRkcmVzc2VzW2ldLCBwcml2LT5yZWdf YmFja3VwW2ldKTsKPiArfQo+ICsKPiAgLyoqIFNldHMgdGhlIHBvd2VyIHN0YXRlIG9mIHRoZSBw YW5lbCBjb25uZWN0ZWQgdG8gdGhlIGl2Y2ggKi8KPiAgc3RhdGljIHZvaWQgaXZjaF9kcG1zKHN0 cnVjdCBpbnRlbF9kdm9fZGV2aWNlICpkdm8sIGJvb2wgZW5hYmxlKQo+ICB7Cj4gIAlpbnQgaTsK PiAgCXVpbnQxNl90IHZyMDEsIHZyMzAsIGJhY2tsaWdodDsKPiAgCj4gKwlpdmNoX3Jlc2V0KGR2 byk7Cj4gKwo+ICAJLyogU2V0IHRoZSBuZXcgcG93ZXIgc3RhdGUgb2YgdGhlIHBhbmVsLiAqLwo+ ICAJaWYgKCFpdmNoX3JlYWQoZHZvLCBWUjAxLCAmdnIwMSkpCj4gIAkJcmV0dXJuOwo+IEBAIC0z MDEsNiArMzY1LDcgQEAgc3RhdGljIHZvaWQgaXZjaF9kcG1zKHN0cnVjdCBpbnRlbF9kdm9fZGV2 aWNlICpkdm8sIGJvb2wgZW5hYmxlKQo+ICAJCWJhY2tsaWdodCA9IDE7Cj4gIAllbHNlCj4gIAkJ YmFja2xpZ2h0ID0gMDsKPiArCj4gIAlpdmNoX3dyaXRlKGR2bywgVlI4MCwgYmFja2xpZ2h0KTsK PiAgCj4gIAlpZiAoZW5hYmxlKQo+IEBAIC0zMjcsNiArMzkyLDggQEAgc3RhdGljIGJvb2wgaXZj aF9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2R2b19kZXZpY2UgKmR2bykKPiAgewo+ICAJdWlu dDE2X3QgdnIwMTsKPiAgCj4gKwlpdmNoX3Jlc2V0KGR2byk7Cj4gKwo+ICAJLyogU2V0IHRoZSBu ZXcgcG93ZXIgc3RhdGUgb2YgdGhlIHBhbmVsLiAqLwo+ICAJaWYgKCFpdmNoX3JlYWQoZHZvLCBW UjAxLCAmdnIwMSkpCj4gIAkJcmV0dXJuIGZhbHNlOwo+IEBAIC0zNDQsMTYgKzQxMSwxOCBAQCBz dGF0aWMgdm9pZCBpdmNoX21vZGVfc2V0KHN0cnVjdCBpbnRlbF9kdm9fZGV2aWNlICpkdm8sCj4g IAl1aW50MTZfdCB2cjQwID0gMDsKPiAgCXVpbnQxNl90IHZyMDE7Cj4gIAo+IC0JdnIwMSA9IDA7 Cj4gLQl2cjQwID0gKFZSNDBfU1RBTExfRU5BQkxFIHwgVlI0MF9WRVJUSUNBTF9JTlRFUlBfRU5B QkxFIHwKPiAtCQlWUjQwX0hPUklaT05UQUxfSU5URVJQX0VOQUJMRSk7Cj4gKwlpdmNoX3Jlc2V0 KGR2byk7Cj4gKwo+ICsJdnIwMSA9IFZSMDFfRElUSEVSX0VOQUJMRTsKPiArCXZyNDAgPSBWUjQw X1NUQUxMX0VOQUJMRTsKPiAgCj4gIAlpZiAobW9kZS0+aGRpc3BsYXkgIT0gYWRqdXN0ZWRfbW9k ZS0+aGRpc3BsYXkgfHwKPiAgCSAgICBtb2RlLT52ZGlzcGxheSAhPSBhZGp1c3RlZF9tb2RlLT52 ZGlzcGxheSkgewo+ICAJCXVpbnQxNl90IHhfcmF0aW8sIHlfcmF0aW87Cj4gIAo+ICAJCXZyMDEg fD0gVlIwMV9QQU5FTF9GSVRfRU5BQkxFOwo+IC0JCXZyNDAgfD0gVlI0MF9DTE9DS19HQVRJTkdf RU5BQkxFOwo+ICsJCXZyNDAgfD0gVlI0MF9DTE9DS19HQVRJTkdfRU5BQkxFIHwgVlI0MF9WRVJU SUNBTF9JTlRFUlBfRU5BQkxFIHwKPiArCQkgIFZSNDBfSE9SSVpPTlRBTF9JTlRFUlBfRU5BQkxF Owo+ICAJCXhfcmF0aW8gPSAoKChtb2RlLT5oZGlzcGxheSAtIDEpIDw8IDE2KSAvCj4gIAkJCSAg IChhZGp1c3RlZF9tb2RlLT5oZGlzcGxheSAtIDEpKSA+PiAyOwo+ICAJCXlfcmF0aW8gPSAoKCht b2RlLT52ZGlzcGxheSAtIDEpIDw8IDE2KSAvCj4gQEAgLTM2OSw3ICs0MzgsNyBAQCBzdGF0aWMg dm9pZCBpdmNoX21vZGVfc2V0KHN0cnVjdCBpbnRlbF9kdm9fZGV2aWNlICpkdm8sCj4gIAlpdmNo X3dyaXRlKGR2bywgVlIwMSwgdnIwMSk7Cj4gIAlpdmNoX3dyaXRlKGR2bywgVlI0MCwgdnI0MCk7 Cj4gIAo+IC0JaXZjaF9kdW1wX3JlZ3MoZHZvKTsKPiArCS8qIGl2Y2hfZHVtcF9yZWdzKGR2byk7 ICovCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGl2Y2hfZHVtcF9yZWdzKHN0cnVjdCBpbnRlbF9k dm9fZGV2aWNlICpkdm8pCj4gQEAgLTM3Nyw0MSArNDQ2LDQzIEBAIHN0YXRpYyB2b2lkIGl2Y2hf ZHVtcF9yZWdzKHN0cnVjdCBpbnRlbF9kdm9fZGV2aWNlICpkdm8pCj4gIAl1aW50MTZfdCB2YWw7 Cj4gIAo+ICAJaXZjaF9yZWFkKGR2bywgVlIwMCwgJnZhbCk7Cj4gLQlEUk1fTE9HX0tNUygiVlIw MDogMHglMDR4XG4iLCB2YWwpOwo+ICsJRFJNX0RFQlVHX0tNUygiVlIwMDogMHglMDR4XG4iLCB2 YWwpOwo+ICAJaXZjaF9yZWFkKGR2bywgVlIwMSwgJnZhbCk7Cj4gLQlEUk1fTE9HX0tNUygiVlIw MTogMHglMDR4XG4iLCB2YWwpOwo+ICsJRFJNX0RFQlVHX0tNUygiVlIwMTogMHglMDR4XG4iLCB2 YWwpOwo+ICsJaXZjaF9yZWFkKGR2bywgVlIxMCwgJnZhbCk7Cj4gKwlEUk1fREVCVUdfS01TKCJW UjEwOiAweCUwNHhcbiIsIHZhbCk7Cj4gIAlpdmNoX3JlYWQoZHZvLCBWUjMwLCAmdmFsKTsKPiAt CURSTV9MT0dfS01TKCJWUjMwOiAweCUwNHhcbiIsIHZhbCk7Cj4gKwlEUk1fREVCVUdfS01TKCJW UjMwOiAweCUwNHhcbiIsIHZhbCk7Cj4gIAlpdmNoX3JlYWQoZHZvLCBWUjQwLCAmdmFsKTsKPiAt CURSTV9MT0dfS01TKCJWUjQwOiAweCUwNHhcbiIsIHZhbCk7Cj4gKwlEUk1fREVCVUdfS01TKCJW UjQwOiAweCUwNHhcbiIsIHZhbCk7Cj4gIAo+ICAJLyogR1BJTyByZWdpc3RlcnMgKi8KPiAgCWl2 Y2hfcmVhZChkdm8sIFZSODAsICZ2YWwpOwo+IC0JRFJNX0xPR19LTVMoIlZSODA6IDB4JTA0eFxu IiwgdmFsKTsKPiArCURSTV9ERUJVR19LTVMoIlZSODA6IDB4JTA0eFxuIiwgdmFsKTsKPiAgCWl2 Y2hfcmVhZChkdm8sIFZSODEsICZ2YWwpOwo+IC0JRFJNX0xPR19LTVMoIlZSODE6IDB4JTA0eFxu IiwgdmFsKTsKPiArCURSTV9ERUJVR19LTVMoIlZSODE6IDB4JTA0eFxuIiwgdmFsKTsKPiAgCWl2 Y2hfcmVhZChkdm8sIFZSODIsICZ2YWwpOwo+IC0JRFJNX0xPR19LTVMoIlZSODI6IDB4JTA0eFxu IiwgdmFsKTsKPiArCURSTV9ERUJVR19LTVMoIlZSODI6IDB4JTA0eFxuIiwgdmFsKTsKPiAgCWl2 Y2hfcmVhZChkdm8sIFZSODMsICZ2YWwpOwo+IC0JRFJNX0xPR19LTVMoIlZSODM6IDB4JTA0eFxu IiwgdmFsKTsKPiArCURSTV9ERUJVR19LTVMoIlZSODM6IDB4JTA0eFxuIiwgdmFsKTsKPiAgCWl2 Y2hfcmVhZChkdm8sIFZSODQsICZ2YWwpOwo+IC0JRFJNX0xPR19LTVMoIlZSODQ6IDB4JTA0eFxu IiwgdmFsKTsKPiArCURSTV9ERUJVR19LTVMoIlZSODQ6IDB4JTA0eFxuIiwgdmFsKTsKPiAgCWl2 Y2hfcmVhZChkdm8sIFZSODUsICZ2YWwpOwo+IC0JRFJNX0xPR19LTVMoIlZSODU6IDB4JTA0eFxu IiwgdmFsKTsKPiArCURSTV9ERUJVR19LTVMoIlZSODU6IDB4JTA0eFxuIiwgdmFsKTsKPiAgCWl2 Y2hfcmVhZChkdm8sIFZSODYsICZ2YWwpOwo+IC0JRFJNX0xPR19LTVMoIlZSODY6IDB4JTA0eFxu IiwgdmFsKTsKPiArCURSTV9ERUJVR19LTVMoIlZSODY6IDB4JTA0eFxuIiwgdmFsKTsKPiAgCWl2 Y2hfcmVhZChkdm8sIFZSODcsICZ2YWwpOwo+IC0JRFJNX0xPR19LTVMoIlZSODc6IDB4JTA0eFxu IiwgdmFsKTsKPiArCURSTV9ERUJVR19LTVMoIlZSODc6IDB4JTA0eFxuIiwgdmFsKTsKPiAgCWl2 Y2hfcmVhZChkdm8sIFZSODgsICZ2YWwpOwo+IC0JRFJNX0xPR19LTVMoIlZSODg6IDB4JTA0eFxu IiwgdmFsKTsKPiArCURSTV9ERUJVR19LTVMoIlZSODg6IDB4JTA0eFxuIiwgdmFsKTsKPiAgCj4g IAkvKiBTY3JhdGNoIHJlZ2lzdGVyIDAgLSBBSU0gUGFuZWwgdHlwZSAqLwo+ICAJaXZjaF9yZWFk KGR2bywgVlI4RSwgJnZhbCk7Cj4gLQlEUk1fTE9HX0tNUygiVlI4RTogMHglMDR4XG4iLCB2YWwp Owo+ICsJRFJNX0RFQlVHX0tNUygiVlI4RTogMHglMDR4XG4iLCB2YWwpOwo+ICAKPiAgCS8qIFNj cmF0Y2ggcmVnaXN0ZXIgMSAtIFN0YXR1cyByZWdpc3RlciAqLwo+ICAJaXZjaF9yZWFkKGR2bywg VlI4RiwgJnZhbCk7Cj4gLQlEUk1fTE9HX0tNUygiVlI4RjogMHglMDR4XG4iLCB2YWwpOwo+ICsJ RFJNX0RFQlVHX0tNUygiVlI4RjogMHglMDR4XG4iLCB2YWwpOwo+ICB9Cj4gIAo+ICBzdGF0aWMg dm9pZCBpdmNoX2Rlc3Ryb3koc3RydWN0IGludGVsX2R2b19kZXZpY2UgKmR2bykKPiAtLSAKPiAx LjcuMTAuNAo+IAoKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBD b3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=