From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2.1 1/3] vga_switcheroo: Add support for switching only the DDC Date: Tue, 25 Aug 2015 10:12:50 +0200 Message-ID: <20150825081249.GO20434@phenom.ffwll.local> References: <7984d8eacbb0386ca52e3fdf2ad2554dc90ff1fe.1439739853.git.lukas@wunner.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f173.google.com (mail-wi0-f173.google.com [209.85.212.173]) by gabe.freedesktop.org (Postfix) with ESMTPS id F07156E0F6 for ; Tue, 25 Aug 2015 01:12:53 -0700 (PDT) Received: by wicja10 with SMTP id ja10so7023065wic.1 for ; Tue, 25 Aug 2015 01:12:52 -0700 (PDT) Content-Disposition: inline In-Reply-To: <7984d8eacbb0386ca52e3fdf2ad2554dc90ff1fe.1439739853.git.lukas@wunner.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Lukas Wunner Cc: Daniel Vetter , Dave Airlie , dri-devel@lists.freedesktop.org, Seth Forshee List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBBdWcgMTQsIDIwMTUgYXQgMDY6NTA6MTVQTSArMDIwMCwgTHVrYXMgV3VubmVyIHdy b3RlOgo+IE9yaWdpbmFsbHkgYnkgU2V0aCBGb3JzaGVlIDxzZXRoLmZvcnNoZWVAY2Fub25pY2Fs LmNvbT4sIDIwMTItMTAtMDQ6Cj4gRHVyaW5nIGdyYXBoaWNzIGRyaXZlciBpbml0aWFsaXphdGlv biBpdCdzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIG11eCBvbmx5Cj4gdGhlIEREQyB0byB0aGUgaW5h Y3RpdmUgY2xpZW50IGluIG9yZGVyIHRvIHJlYWQgdGhlIEVESUQuIEFkZCBhCj4gc3dpdGNoX2Rk YyBjYWxsYmFjayB0byBhbGxvdyBjYXBhYmxlIGhhbmRsZXJzIHRvIHByb3ZpZGUgdGhpcwo+IGZ1 bmN0aW9uYWxpdHksIGFuZCBhZGQgdmdhX3N3aXRjaGVyb29fc3dpdGNoX2RkYygpIHRvIGFsbG93 IERSTSB0byBtdXgKPiBvbmx5IHRoZSBEREMuCj4gCj4gTW9kaWZpZWQgYnkgRGF2ZSBBaXJsaWUg PGFpcmxpZWRAZ21haWwuY29tPiwgMjAxMi0xMi0yMjoKPiBJIGNhbid0IGZpZ3VyZSBvdXQgd2h5 IEkgZGlkbid0IGxpa2UgdGhpcywgYnV0IEkgcmV3cm90ZSB0aGlzIFsuLi5dIHRvCj4gbG9jay91 bmxvY2sgdGhlIGRkYyBsaW5lcyBbLi4uXS4gSSB0aGluayBJJ2QgcHJlZmVyIHNvbWV0aGluZyBs aWtlIHRoYXQKPiBvdGhlcndpc2UgdGhlIGludGVyZmFjZSBnb3QgcmVhbGx5IHVnbHkuCj4gCj4g TW9kaWZpZWQgYnkgTHVrYXMgV3VubmVyIDxsdWthc0B3dW5uZXIuZGU+LCAyMDE1LTA4LTE0Ogo+ IERvbid0IGdyYWIgdmdhc3JfbXV0ZXggaW4gbG9ja19kZGMvdW5sb2NrX2RkYyB0byBhdm9pZCB0 aGUgZm9sbG93aW5nCj4gZGVhZGxvY2sgc2NlbmFyaW9zOiAoYSkgRHVyaW5nIHN3aXRjaCAod2l0 aCB2Z2Fzcl9tdXRleCBhbHJlYWR5IGhlbGQpLAo+IEdQVSBpcyB3b2tlbiBhbmQgcHJvYmVzIGl0 cyBvdXRwdXRzLCB0cmllcyB0byByZS1hY3F1aXJlIHZnYXNyX211dGV4Cj4gdG8gbG9jayBEREMg bGluZXMuIChiKSBMaWtld2lzZSBkdXJpbmcgc3dpdGNoLCBHUFUgaXMgc3VzcGVuZGVkIGFuZAo+ IGNhbGxzIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyB0byBzdG9wIG91dHB1dCBwb2xsaW5nLCBp ZiBwb2xsIHRhc2sKPiBpcyBydW5uaW5nIGF0IHRoaXMgbW9tZW50IHdlIG1heSB3YWl0IGZvcmV2 ZXIgZm9yIGl0IHRvIGZpbmlzaC4KPiBJZiB3ZSBkb24ndCBncmFiIHZnYXNyX211dGV4IHRoZSBv bmx5IGJhZCB0aGluZyB0aGF0IGNhbiBoYXBwZW4gaXMKPiB0aGF0IHRoZSBoYW5kbGVyIHN1ZGRl bmx5IGRpc2FwcGVhcnMuIFNvIGJsb2NrIGhhbmRsZXIgZGVyZWdpc3RyYXRpb24KPiB1bnRpbCBE REMgbGluZXMgYXJlIHVubG9ja2VkIGFnYWluLgo+IAo+IFdBUk5fT05fT05DRSBpZiB1bmxvY2tf ZGRjIGlzIGNhbGxlZCB3aXRob3V0IGNhbGxpbmcgbG9ja19kZGMgZmlyc3QuCj4gTG9jayBkZGNf bG9jayBpbiBzdGFnZTIgdG8gYXZvaWQgcmFjZSBjb25kaXRpb24gd2hlcmUgcmVhZGluZyB0aGUK PiBFRElEIGFuZCBzd2l0Y2hpbmcgaGFwcGVucyBzaW11bHRhbmVvdXNseS4gU3dpdGNoIEREQyBs aW5lcyBvbgo+IE1JR0QgLyBNRElTIGNvbW1hbmRzIGFuZCBvbiBydW50aW1lIHN1c3BlbmQuIEZp eCBidWcgaW4gc3RhZ2UyCj4gd2hlcmUgbm8gY2xpZW50IGhhZCB0aGUgYWN0aXZlIGF0dHJpYnV0 ZSBzZXQgaWYgc3dpdGNoaW5nIGZhaWxlZC4KPiBGaXggZXJyb25lb3VzIGludGVyZmFjZSBkb2N1 bWVudGF0aW9uLgo+IAo+IElmIHRoZSBpbmFjdGl2ZSBjbGllbnQgcmVnaXN0ZXJzIGJlZm9yZSB0 aGUgYWN0aXZlIGNsaWVudCB0aGVuCj4gb2xkX2RkY19vd25lciBjYW5ub3QgYmUgZGV0ZXJtaW5l ZCB3aXRoIGZpbmRfYWN0aXZlX2NsaWVudCgpCj4gKG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSku IFRoZXJlZm9yZSBjaGFuZ2Ugc2VtYW50aWNzIG9mIHRoZQo+IC0+c3dpdGNoX2RkYyBoYW5kbGVy IGNhbGxiYWNrIHRvIHJldHVybiBvbGRfZGRjX293bmVyLgo+IAo+IHYyLjE6IE92ZXJoYXVsIGxv Y2tpbmcsIHNxdWFzaCBjb21taXRzIChyZXF1ZXN0ZWQgYnkgRGFuaWVsIFZldHRlcikKPiAKPiBC dWd6aWxsYTogaHR0cHM6Ly9idWd6aWxsYS5rZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9pZD04ODg2 MQo+IEJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9p ZD02MTExNQo+IFRlc3RlZC1ieTogTHVrYXMgV3VubmVyIDxsdWthc0B3dW5uZXIuZGU+Cj4gICAg IFtNQlAgIDksMSAyMDEyICBpbnRlbCBJVkIgKyBudmlkaWEgR0sxMDcgIHByZS1yZXRpbmFdCj4g Cj4gQ2M6IFNldGggRm9yc2hlZSA8c2V0aC5mb3JzaGVlQGNhbm9uaWNhbC5jb20+Cj4gQ2M6IERh dmUgQWlybGllIDxhaXJsaWVkQGdtYWlsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBMdWthcyBXdW5u ZXIgPGx1a2FzQHd1bm5lci5kZT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvdmdhL3ZnYV9zd2l0Y2hl cm9vLmMgfCA3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCj4gIGlu Y2x1ZGUvbGludXgvdmdhX3N3aXRjaGVyb28uaCAgIHwgIDYgKysrKwo+ICAyIGZpbGVzIGNoYW5n ZWQsIDc0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L3ZnYS92Z2Ffc3dpdGNoZXJvby5jIGIvZHJpdmVycy9ncHUvdmdhL3ZnYV9zd2l0 Y2hlcm9vLmMKPiBpbmRleCAzN2FjN2I1Li5hYzRhYzEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L3ZnYS92Z2Ffc3dpdGNoZXJvby5jCj4gKysrIGIvZHJpdmVycy9ncHUvdmdhL3ZnYV9zd2l0 Y2hlcm9vLmMKPiBAQCAtOSwxMiArOSwxMyBAQAo+ICAKPiAgIFN3aXRjaGVyIGludGVyZmFjZSAt IG1ldGhvZHMgcmVxdWlyZSBmb3IgQVRQWCBhbmQgRENNCj4gICAtIHN3aXRjaHRvIC0gdGhpcyB0 aHJvd3MgdGhlIG91dHB1dCBNVVggc3dpdGNoCj4gLSAtIGRpc2NyZXRlX3NldF9wb3dlciAtIHNl dHMgdGhlIHBvd2VyIHN0YXRlIGZvciB0aGUgZGlzY3JldGUgY2FyZAo+ICsgLSBzd2l0Y2hfZGRj IC0gc3dpdGNoIG9ubHkgRERDIGxpbmVzLCByZXR1cm4gb2xkIEREQyBvd25lcgo+ICsgLSBwb3dl cl9zdGF0ZSAtIHNldHMgdGhlIHBvd2VyIHN0YXRlIGZvciBlaXRoZXIgR1BVCj4gIAo+ICAgR1BV IGRyaXZlciBpbnRlcmZhY2UKPiAgIC0gc2V0X2dwdV9zdGF0ZSAtIHRoaXMgc2hvdWxkIGRvIHRo ZSBlcXVpdiBvZiBzL3IgZm9yIHRoZSBjYXJkCj4gIAkJICAtIHRoaXMgc2hvdWxkICpub3QqIHNl dCB0aGUgZGlzY3JldGUgcG93ZXIgc3RhdGUKPiAtIC0gc3dpdGNoX2NoZWNrICAtIGNoZWNrIGlm IHRoZSBkZXZpY2UgaXMgaW4gYSBwb3NpdGlvbiB0byBzd2l0Y2ggbm93Cj4gKyAtIGNhbl9zd2l0 Y2ggLSBjaGVjayBpZiB0aGUgZGV2aWNlIGlzIGluIGEgcG9zaXRpb24gdG8gc3dpdGNoIG5vdwo+ ICAgKi8KClNpbmNlIHlvdSdyZSBqdXN0IGRpZ2dpbiBhcm91bmQgaW4gc3dpdGNoZXJvbyBjb2Rl IGl0IHdvdWxkIGJlIGF3ZXNvbWUgdG8Kd3JpdGUgcHJvcGVyIGtlcm5lbGRvYyBmb3IgYWxsIHRo ZSBmdW5jdGlvbnMgZXhwb3NlZCB0byBkcml2ZXJzLCBtb3ZlIHRoZQphYm92ZSB0byBhIHByb3Bl ciBrZXJuZWxkb2MgZm9yIHRoZSB2ZnVuYyB0YWJsZXMgKHRoZXJlJ3MgbmV3IHN1cHBvcnQgZm9y CmFkZGluZyBrZXJuZWxkb2Mgc3BsaXQgdXAgcGVyIG1lbWJlciBpbnN0ZWFkIG9mIG9uZSBiaWcg cGlsZSBzcXVhc2hlZCBhdAp0aGUgdG9wKS4gQW5kIHRoZW4gYmluZCBpdCB0b2dldGhlciB3aXRo IHRoZSBvdmVydmlldyBzZWN0aW9ucyB3aXRoIERPQwpjb21tZW50cyBpbiBEb2N1bWVudGF0aW9u L0RvY0Jvb2svZHJtLnRtcGwuCgpUaGF0IHdvdWxkIGFsc28gaGVscCByZXZpZXdpbmcgOy0pCgo+ ICAKPiAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+IEBAIC01Nyw2ICs1OCw4IEBAIHN0cnVj dCB2Z2Fzcl9wcml2IHsKPiAgCXN0cnVjdCBsaXN0X2hlYWQgY2xpZW50czsKPiAgCj4gIAlzdHJ1 Y3QgdmdhX3N3aXRjaGVyb29faGFuZGxlciAqaGFuZGxlcjsKPiArCXN0cnVjdCBtdXRleCBkZGNf bG9jazsKPiArCWludCBvbGRfZGRjX293bmVyOwoKTmV3IGxvY2tzIGltbyBuZWVkIGNvbW1lbnRz IGFib3V0IHdoYXQgZXhhY3RseSB0aGV5IHByb3RlY3QuCgo+ICB9Owo+ICAKPiAgI2RlZmluZSBJ RF9CSVRfQVVESU8JCTB4MTAwCj4gQEAgLTcwLDYgKzczLDcgQEAgc3RhdGljIHZvaWQgdmdhX3N3 aXRjaGVyb29fZGVidWdmc19maW5pKHN0cnVjdCB2Z2Fzcl9wcml2ICpwcml2KTsKPiAgLyogb25s eSBvbmUgc3dpdGNoZXJvbyBwZXIgc3lzdGVtICovCj4gIHN0YXRpYyBzdHJ1Y3Qgdmdhc3JfcHJp diB2Z2Fzcl9wcml2ID0gewo+ICAJLmNsaWVudHMgPSBMSVNUX0hFQURfSU5JVCh2Z2Fzcl9wcml2 LmNsaWVudHMpLAo+ICsJLmRkY19sb2NrID0gX19NVVRFWF9JTklUSUFMSVpFUih2Z2Fzcl9wcml2 LmRkY19sb2NrKSwKPiAgfTsKPiAgCj4gIHN0YXRpYyBib29sIHZnYV9zd2l0Y2hlcm9vX3JlYWR5 KHZvaWQpCj4gQEAgLTEyMiwxMiArMTI2LDE0IEBAIEVYUE9SVF9TWU1CT0wodmdhX3N3aXRjaGVy b29fcmVnaXN0ZXJfaGFuZGxlcik7Cj4gIHZvaWQgdmdhX3N3aXRjaGVyb29fdW5yZWdpc3Rlcl9o YW5kbGVyKHZvaWQpCj4gIHsKPiAgCW11dGV4X2xvY2soJnZnYXNyX211dGV4KTsKPiArCW11dGV4 X2xvY2soJnZnYXNyX3ByaXYuZGRjX2xvY2spOwo+ICAJdmdhc3JfcHJpdi5oYW5kbGVyID0gTlVM TDsKPiAgCWlmICh2Z2Fzcl9wcml2LmFjdGl2ZSkgewo+ICAJCXByX2luZm8oInZnYV9zd2l0Y2hl cm9vOiBkaXNhYmxlZFxuIik7Cj4gIAkJdmdhX3N3aXRjaGVyb29fZGVidWdmc19maW5pKCZ2Z2Fz cl9wcml2KTsKPiAgCQl2Z2Fzcl9wcml2LmFjdGl2ZSA9IGZhbHNlOwo+ICAJfQo+ICsJbXV0ZXhf dW5sb2NrKCZ2Z2Fzcl9wcml2LmRkY19sb2NrKTsKPiAgCW11dGV4X3VubG9jaygmdmdhc3JfbXV0 ZXgpOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0wodmdhX3N3aXRjaGVyb29fdW5yZWdpc3Rlcl9oYW5k bGVyKTsKPiBAQCAtMjU2LDYgKzI2Miw0MyBAQCB2b2lkIHZnYV9zd2l0Y2hlcm9vX2NsaWVudF9m Yl9zZXQoc3RydWN0IHBjaV9kZXYgKnBkZXYsCj4gIH0KPiAgRVhQT1JUX1NZTUJPTCh2Z2Ffc3dp dGNoZXJvb19jbGllbnRfZmJfc2V0KTsKPiAgCj4gK2ludCB2Z2Ffc3dpdGNoZXJvb19sb2NrX2Rk YyhzdHJ1Y3QgcGNpX2RldiAqcGRldikKClNpbmNlIHRoaXMgY2FuIGZhaWwgcGxlYXNlIGNhbGwg aXQgc29tZXRoaW5nIGxpa2UgdHJ5X2xvY2tfZGRjIHRvIG1ha2UKdGhhdCBjbGVhciB0byBjYWxs ZXJzLiBPciBtYWtlIGl0IHJldHVybiB2b2lkLgoKPiArewo+ICsJaW50IGlkOwo+ICsKPiArCW11 dGV4X2xvY2soJnZnYXNyX3ByaXYuZGRjX2xvY2spOwo+ICsKPiArCWlmICghdmdhc3JfcHJpdi5o YW5kbGVyIHx8ICF2Z2Fzcl9wcml2LmhhbmRsZXItPnN3aXRjaF9kZGMpCj4gKwkJcmV0dXJuIHZn YXNyX3ByaXYub2xkX2RkY19vd25lciA9IC1FTk9ERVY7Cj4gKwo+ICsJaWQgPSB2Z2Fzcl9wcml2 LmhhbmRsZXItPmdldF9jbGllbnRfaWQocGRldik7Cj4gKwlyZXR1cm4gdmdhc3JfcHJpdi5vbGRf ZGRjX293bmVyID0gdmdhc3JfcHJpdi5oYW5kbGVyLT5zd2l0Y2hfZGRjKGlkKTsKCkxvb2tpbmcg YXQgcGF0Y2ggMyB5b3UgZG9uJ3Qgc2VlbSB0byBoYW5kbGUgdGhpcyBlcnJvci4gQWxzbyBpZiB0 aGlzCmZ1bmN0aW9uIGZhaWxzIGl0IHNob3VsZCBfbm90XyBncmFiIHRoZSBsb2NrIHNvIHRoYXQg d2UgY2FuIGRvIHNvbWV0aGluZwpsaWtlCgoJcmV0ID0gdHJ5X2xvY2tfZGRjKCk7CglpZiAocmV0 KSB7CgkJcHJpbnRrKCJhcmchIik7CgkJcmV0dXJuIHJldDsKCX0KCglkcm1fZ2V0X2VkaWQoKTsK CXVubG9ja19kZGMoKTsKCn0KPiArfQo+ICtFWFBPUlRfU1lNQk9MKHZnYV9zd2l0Y2hlcm9vX2xv Y2tfZGRjKTsKPiArCj4gK2ludCB2Z2Ffc3dpdGNoZXJvb191bmxvY2tfZGRjKHN0cnVjdCBwY2lf ZGV2ICpwZGV2KQo+ICt7Cj4gKwlpbnQgcmV0LCBpZDsKPiArCj4gKwlpZiAoV0FSTl9PTl9PTkNF KCFtdXRleF9pc19sb2NrZWQoJnZnYXNyX3ByaXYuZGRjX2xvY2spKSkKPiArCQlyZXR1cm4gLUVJ TlZBTDsKPiArCj4gKwlpZiAodmdhc3JfcHJpdi5vbGRfZGRjX293bmVyIDwgMCkgewo+ICsJCW11 dGV4X3VubG9jaygmdmdhc3JfcHJpdi5kZGNfbG9jayk7Cj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4g Kwl9Cj4gKwo+ICsJaWQgPSB2Z2Fzcl9wcml2LmhhbmRsZXItPmdldF9jbGllbnRfaWQocGRldik7 Cj4gKwlpZiAodmdhc3JfcHJpdi5vbGRfZGRjX293bmVyICE9IGlkKQo+ICsJCXJldCA9IHZnYXNy X3ByaXYuaGFuZGxlci0+c3dpdGNoX2RkYyh2Z2Fzcl9wcml2Lm9sZF9kZGNfb3duZXIpOwo+ICsJ ZWxzZQo+ICsJCXJldCA9IHZnYXNyX3ByaXYub2xkX2RkY19vd25lcjsKPiArCW11dGV4X3VubG9j aygmdmdhc3JfcHJpdi5kZGNfbG9jayk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICtFWFBP UlRfU1lNQk9MKHZnYV9zd2l0Y2hlcm9vX3VubG9ja19kZGMpOwo+ICsKPiAgc3RhdGljIGludCB2 Z2Ffc3dpdGNoZXJvb19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdikKPiAgewo+ICAJ c3RydWN0IHZnYV9zd2l0Y2hlcm9vX2NsaWVudCAqY2xpZW50Owo+IEBAIC0zNDEsOCArMzg0LDYg QEAgc3RhdGljIGludCB2Z2Ffc3dpdGNodG9fc3RhZ2UyKHN0cnVjdCB2Z2Ffc3dpdGNoZXJvb19j bGllbnQgKm5ld19jbGllbnQpCj4gIAlpZiAoIWFjdGl2ZSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4g LQlhY3RpdmUtPmFjdGl2ZSA9IGZhbHNlOwo+IC0KPiAgCXNldF9hdWRpb19zdGF0ZShhY3RpdmUt PmlkLCBWR0FfU1dJVENIRVJPT19PRkYpOwo+ICAKPiAgCWlmIChuZXdfY2xpZW50LT5mYl9pbmZv KSB7Cj4gQEAgLTM1Myw5ICszOTQsMjEgQEAgc3RhdGljIGludCB2Z2Ffc3dpdGNodG9fc3RhZ2Uy KHN0cnVjdCB2Z2Ffc3dpdGNoZXJvb19jbGllbnQgKm5ld19jbGllbnQpCj4gIAkJY29uc29sZV91 bmxvY2soKTsKPiAgCX0KPiAgCj4gKwlpZiAodmdhc3JfcHJpdi5oYW5kbGVyLT5zd2l0Y2hfZGRj KSB7Cj4gKwkJbXV0ZXhfbG9jaygmdmdhc3JfcHJpdi5kZGNfbG9jayk7Cj4gKwkJdmdhc3JfcHJp di5oYW5kbGVyLT5zd2l0Y2hfZGRjKG5ld19jbGllbnQtPmlkKTsKPiArCQltdXRleF91bmxvY2so JnZnYXNyX3ByaXYuZGRjX2xvY2spOwo+ICsJfQo+ICAJcmV0ID0gdmdhc3JfcHJpdi5oYW5kbGVy LT5zd2l0Y2h0byhuZXdfY2xpZW50LT5pZCk7Cj4gLQlpZiAocmV0KQo+ICsJaWYgKHJldCkgewo+ ICsJCWlmICh2Z2Fzcl9wcml2LmhhbmRsZXItPnN3aXRjaF9kZGMpIHsKPiArCQkJbXV0ZXhfbG9j aygmdmdhc3JfcHJpdi5kZGNfbG9jayk7Cj4gKwkJCXZnYXNyX3ByaXYuaGFuZGxlci0+c3dpdGNo X2RkYyhhY3RpdmUtPmlkKTsKPiArCQkJbXV0ZXhfdW5sb2NrKCZ2Z2Fzcl9wcml2LmRkY19sb2Nr KTsKPiArCQl9CgpKdXN0IGZvciBzYWZldHkgSSdkIGdyYWIgdGhlIGRkY19sb2NrIGFyb3VuZCB0 aGUgZW50aXJlIHNlcXVlbmNlLgoKT3ZlcmFsbCB0aGVyZSBzZWVtcyB0byBiZSBhIGxvdCBsZXNz IHNjYXJ5IGluIHRoZXNlIDMgcGF0Y2hlcyB0aGFuIHRoZQpwcmV2aW91cyBzZXJpZXMuIElzIHRo aXMgcmVhbGx5IGFsbCBkdWUgdG8gc3F1YXNoaW5nIG9yIGlzIHRoaXMgc2VyaWVzCmluY29tcGxl dGU/Ci1EYW5pZWwKCj4gIAkJcmV0dXJuIHJldDsKPiArCX0KPiArCWFjdGl2ZS0+YWN0aXZlID0g ZmFsc2U7Cj4gIAo+ICAJaWYgKG5ld19jbGllbnQtPm9wcy0+cmVwcm9iZSkKPiAgCQluZXdfY2xp ZW50LT5vcHMtPnJlcHJvYmUobmV3X2NsaWVudC0+cGRldik7Cj4gQEAgLTQ2OCw2ICs1MjEsMTEg QEAgdmdhX3N3aXRjaGVyb29fZGVidWdmc193cml0ZShzdHJ1Y3QgZmlsZSAqZmlscCwgY29uc3Qg Y2hhciBfX3VzZXIgKnVidWYsCj4gIAl2Z2Fzcl9wcml2LmRlbGF5ZWRfc3dpdGNoX2FjdGl2ZSA9 IGZhbHNlOwo+ICAKPiAgCWlmIChqdXN0X211eCkgewo+ICsJCWlmICh2Z2Fzcl9wcml2LmhhbmRs ZXItPnN3aXRjaF9kZGMpIHsKPiArCQkJbXV0ZXhfbG9jaygmdmdhc3JfcHJpdi5kZGNfbG9jayk7 Cj4gKwkJCXZnYXNyX3ByaXYuaGFuZGxlci0+c3dpdGNoX2RkYyhjbGllbnRfaWQpOwo+ICsJCQlt dXRleF91bmxvY2soJnZnYXNyX3ByaXYuZGRjX2xvY2spOwo+ICsJCX0KPiAgCQlyZXQgPSB2Z2Fz cl9wcml2LmhhbmRsZXItPnN3aXRjaHRvKGNsaWVudF9pZCk7Cj4gIAkJZ290byBvdXQ7Cj4gIAl9 Cj4gQEAgLTYyMyw2ICs2ODEsMTEgQEAgc3RhdGljIGludCB2Z2Ffc3dpdGNoZXJvb19ydW50aW1l X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQo+ICAJcmV0ID0gZGV2LT5idXMtPnBtLT5ydW50 aW1lX3N1c3BlbmQoZGV2KTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiArCWlmICh2 Z2Fzcl9wcml2LmhhbmRsZXItPnN3aXRjaF9kZGMpIHsKPiArCQltdXRleF9sb2NrKCZ2Z2Fzcl9w cml2LmRkY19sb2NrKTsKPiArCQl2Z2Fzcl9wcml2LmhhbmRsZXItPnN3aXRjaF9kZGMoVkdBX1NX SVRDSEVST09fSUdEKTsKPiArCQltdXRleF91bmxvY2soJnZnYXNyX3ByaXYuZGRjX2xvY2spOwo+ ICsJfQo+ICAJaWYgKHZnYXNyX3ByaXYuaGFuZGxlci0+c3dpdGNodG8pCj4gIAkJdmdhc3JfcHJp di5oYW5kbGVyLT5zd2l0Y2h0byhWR0FfU1dJVENIRVJPT19JR0QpOwo+ICAJdmdhX3N3aXRjaGVy b29fcG93ZXJfc3dpdGNoKHBkZXYsIFZHQV9TV0lUQ0hFUk9PX09GRik7Cj4gZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvdmdhX3N3aXRjaGVyb28uaCBiL2luY2x1ZGUvbGludXgvdmdhX3N3aXRj aGVyb28uaAo+IGluZGV4IGI0ODNhYmQuLjYyZjMwM2YgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9s aW51eC92Z2Ffc3dpdGNoZXJvby5oCj4gKysrIGIvaW5jbHVkZS9saW51eC92Z2Ffc3dpdGNoZXJv by5oCj4gQEAgLTI5LDYgKzI5LDcgQEAgZW51bSB2Z2Ffc3dpdGNoZXJvb19jbGllbnRfaWQgewo+ ICB9Owo+ICAKPiAgc3RydWN0IHZnYV9zd2l0Y2hlcm9vX2hhbmRsZXIgewo+ICsJaW50ICgqc3dp dGNoX2RkYykoZW51bSB2Z2Ffc3dpdGNoZXJvb19jbGllbnRfaWQgaWQpOwo+ICAJaW50ICgqc3dp dGNodG8pKGVudW0gdmdhX3N3aXRjaGVyb29fY2xpZW50X2lkIGlkKTsKPiAgCWludCAoKnBvd2Vy X3N0YXRlKShlbnVtIHZnYV9zd2l0Y2hlcm9vX2NsaWVudF9pZCBpZCwKPiAgCQkJICAgZW51bSB2 Z2Ffc3dpdGNoZXJvb19zdGF0ZSBzdGF0ZSk7Cj4gQEAgLTU0LDYgKzU1LDkgQEAgaW50IHZnYV9z d2l0Y2hlcm9vX3JlZ2lzdGVyX2F1ZGlvX2NsaWVudChzdHJ1Y3QgcGNpX2RldiAqcGRldiwKPiAg dm9pZCB2Z2Ffc3dpdGNoZXJvb19jbGllbnRfZmJfc2V0KHN0cnVjdCBwY2lfZGV2ICpkZXYsCj4g IAkJCQkgIHN0cnVjdCBmYl9pbmZvICppbmZvKTsKPiAgCj4gK2ludCB2Z2Ffc3dpdGNoZXJvb19s b2NrX2RkYyhzdHJ1Y3QgcGNpX2RldiAqcGRldik7Cj4gK2ludCB2Z2Ffc3dpdGNoZXJvb191bmxv Y2tfZGRjKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTsKPiArCj4gIGludCB2Z2Ffc3dpdGNoZXJvb19y ZWdpc3Rlcl9oYW5kbGVyKHN0cnVjdCB2Z2Ffc3dpdGNoZXJvb19oYW5kbGVyICpoYW5kbGVyKTsK PiAgdm9pZCB2Z2Ffc3dpdGNoZXJvb191bnJlZ2lzdGVyX2hhbmRsZXIodm9pZCk7Cj4gIAo+IEBA IC03Miw2ICs3Niw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB2Z2Ffc3dpdGNoZXJvb191bnJlZ2lz dGVyX2NsaWVudChzdHJ1Y3QgcGNpX2RldiAqZGV2KSB7fQo+ICBzdGF0aWMgaW5saW5lIGludCB2 Z2Ffc3dpdGNoZXJvb19yZWdpc3Rlcl9jbGllbnQoc3RydWN0IHBjaV9kZXYgKmRldiwKPiAgCQlj b25zdCBzdHJ1Y3QgdmdhX3N3aXRjaGVyb29fY2xpZW50X29wcyAqb3BzLCBib29sIGRyaXZlcl9w b3dlcl9jb250cm9sKSB7IHJldHVybiAwOyB9Cj4gIHN0YXRpYyBpbmxpbmUgdm9pZCB2Z2Ffc3dp dGNoZXJvb19jbGllbnRfZmJfc2V0KHN0cnVjdCBwY2lfZGV2ICpkZXYsIHN0cnVjdCBmYl9pbmZv ICppbmZvKSB7fQo+ICtzdGF0aWMgaW5saW5lIGludCB2Z2Ffc3dpdGNoZXJvb19sb2NrX2RkYyhz dHJ1Y3QgcGNpX2RldiAqcGRldikgeyByZXR1cm4gLUVOT0RFVjsgfQo+ICtzdGF0aWMgaW5saW5l IGludCB2Z2Ffc3dpdGNoZXJvb191bmxvY2tfZGRjKHN0cnVjdCBwY2lfZGV2ICpwZGV2KSB7IHJl dHVybiAtRU5PREVWOyB9Cj4gIHN0YXRpYyBpbmxpbmUgaW50IHZnYV9zd2l0Y2hlcm9vX3JlZ2lz dGVyX2hhbmRsZXIoc3RydWN0IHZnYV9zd2l0Y2hlcm9vX2hhbmRsZXIgKmhhbmRsZXIpIHsgcmV0 dXJuIDA7IH0KPiAgc3RhdGljIGlubGluZSBpbnQgdmdhX3N3aXRjaGVyb29fcmVnaXN0ZXJfYXVk aW9fY2xpZW50KHN0cnVjdCBwY2lfZGV2ICpwZGV2LAo+ICAJY29uc3Qgc3RydWN0IHZnYV9zd2l0 Y2hlcm9vX2NsaWVudF9vcHMgKm9wcywKPiAtLSAKPiAyLjEuMAo+IAoKLS0gCkRhbmllbCBWZXR0 ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xs LmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==