From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Kocialkowski Subject: Re: [PATCH 1/2] drm/edid: Add helper to detect whether EDID changed Date: Tue, 25 Jul 2017 10:58:55 +0300 Message-ID: <1500969535.1277.3.camel@linux.intel.com> References: <20170724145447.23449-1-paul.kocialkowski@linux.intel.com> <20170725065328.fhe75lpunqn7vcqv@phenom.ffwll.local> <1500967544.1277.1.camel@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Daniel Vetter , intel-gfx , Linux Kernel Mailing List , dri-devel List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCAyMDE3LTA3LTI1IGF0IDA5OjM0ICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ IE9uIFR1ZSwgSnVsIDI1LCAyMDE3IGF0IDk6MjUgQU0sIFBhdWwgS29jaWFsa293c2tpCj4gPHBh dWwua29jaWFsa293c2tpQGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4gPiBPbiBUdWUsIDIwMTct MDctMjUgYXQgMDg6NTMgKzAyMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiA+IE9uIE1vbiwg SnVsIDI0LCAyMDE3IGF0IDA1OjU0OjQ2UE0gKzAzMDAsIFBhdWwgS29jaWFsa293c2tpIHdyb3Rl Ogo+ID4gPiA+IFRoaXMgYWRkcyBhIGNvbW1vbiBkcm0gaGVscGVyIHRvIGRldGVjdCB3aGV0aGVy IHRoZSBFRElEIGNoYW5nZWQKPiA+ID4gPiBmcm9tCj4gPiA+ID4gdGhlIGxhc3Qga25vd24gY2Fj aGVkIG9uZS4gVGhpcyBpcyB1c2VmdWwgaGVscCBkZXRlY3QgdGhhdCBhCj4gPiA+ID4gbW9uaXRv cgo+ID4gPiA+IHdhcwo+ID4gPiA+IGNoYW5nZWQgZHVyaW5nIGEgc3VzcGVuZC9yZXN1bWUgY3lj bGUuCj4gPiA+ID4gCj4gPiA+ID4gV2hlbiB0aGF0IGhhcHBlbnMgKGEgbW9uaXRvciBpcyByZXBs YWNlZCBieSBhbm90aGVyIG9uZSBkdXJpbmcKPiA+ID4gPiBzdXNwZW5kKSwKPiA+ID4gPiBubyBo b3RwbHVnIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIHNvIHRoZSBjaGFuZ2Ugd2lsbCBub3QgYmUK PiA+ID4gPiBjYXVnaHQKPiA+ID4gPiBhdAo+ID4gPiA+IHJlc3VtZSB0aW1lLiBEZXRlY3Rpbmcg dGhhdCB0aGUgRURJRCBjaGFuZ2VkIGFsbG93cyBkZXRlY3RpbmcKPiA+ID4gPiBpdC4KPiA+ID4g PiAKPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBQYXVsIEtvY2lhbGtvd3NraSA8cGF1bC5rb2NpYWxr b3dza2lAbGludXguaW50ZWwuCj4gPiA+ID4gY29tPgo+ID4gPiAKPiA+ID4gSSBjYW4ndCBmaW5k IHRoZSBvbGRlciBtYWlscyBJJ3ZlIHR5cGVkIGFib3V0IHRoaXMsIGJ1dCB0aGUgcGxhbgo+ID4g PiB3ZSd2ZQo+ID4gPiBkaXNjdXNzZWQgYSB3aGlsZSBiYWNrIHdhczoKPiA+ID4gLSBBZGQgYSBn ZW5lcmF0aW9uYWwgY291bnRlciB0byBlYWNoIGNvbm5lY3RvciwgbWF5YmUgZXZlbiBleHBvc2UK PiA+ID4gaXQKPiA+ID4gdG8KPiA+ID4gICB1c2Vyc3BhY2UuCj4gPiA+IAo+ID4gPiAtIEluY3Jl bWVudCB0aGF0IGNvdW50ZXIgZXZlcnkgdGltZSBzb21ldGhpbmcgY2hhbmdlZCwgZS5nLgo+ID4g PiAgIGNvbm5lY3Rvci0+c3RhdHVzIGluIHRoZSBwcm9wYmUgaGVscGVycywgb3Igd2hlbiBhdHRh Y2hpbmcgYSBuZXcKPiA+ID4gZWRpZAo+ID4gPiAgIHdpdGggdGhlIHNldF9lZGlkIGhlbHBlci4K PiA+ID4gCj4gPiA+IC0gVGFkYSwgbm8gY2hhbmdlcyBuZWVkZWQgdG8gZHJpdmVycywgYW5kIGVh c2lseSBleHRlbnNpYmxlIHRvCj4gPiA+IG90aGVyCj4gPiA+ICAgdGhpbmdzIHRoYW4gZWRpZCEK PiA+IAo+ID4gSSBkb24ndCBzZWUgaG93IGl0IHNvbHZlcyB0aGUgcHJvYmxlbSBoZXJlIHRob3Vn aC4gQWZ0ZXIgYQo+ID4gc3VzcGVuZC9yZXN1bWUgY3ljbGUsIHRoZXJlIGlzIHNpbXBseSBubyBp bmRpY2F0aW9uIHRoYXQgYW55dGhpbmcKPiA+IGhhcwo+ID4gY2hhbmdlZCB3aGVuIGEgbW9uaXRv ciB3YXMgcmVwbGFjZWQgYnkgYW5vdGhlciBvbmUsIHNvIEkgZG9uJ3Qgc2VlCj4gPiBob3cKPiA+ IGFkZGluZyBhIGNvdW50ZXIgaW4gdGhlIG1peCB3b3VsZCBoZWxwLgo+ID4gCj4gPiBDb3VsZCB5 b3UgcHJvdmlkZSBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIHJlYXNvbmluZz8gSSBmZWVsIGxpa2Ug SSdtCj4gPiBtaXNzaW5nIHNvbWV0aGluZyBoZXJlLgo+IAo+IFlvdXIgYnVnIGRvZXNuJ3QganVz dCBleGlzdCBvdmVyIHMvciwgaXQncyBqdXN0IG11Y2ggZWFzaWVyIHRvIG9ic2VydmUKPiBpbiBz L3Igc2luY2UgdXNlcnMgY2FuIHRha2UgaG93ZXZlciBsb25nIHRoZXkgd2FudCB0byB3aXRoIHBs dWdnaW5nIGluCj4gYSBkaWZmZXJlbnQgbW9uaXRvci4gQnV0IHRoZSBzYW1lIGlzc3VlIGV4aXN0 cyBlLmcuIHdoZW4gd2UgZ28gZnJvbQo+IGhwZCB0byBwb2xsaW5nIGJlY2F1c2UgdG9vIG11Y2gg bm9pc2Ugb24gdGhlIGxpbmUuCj4gCj4gV3J0IHRoZSBzdXNwZW5kL3Jlc3VtZSBpc3N1ZTogV2hh dCB3ZSBuZWVkIHRvIGRvIG9uIHJlc3VtZSBpcyBkbyBhCj4gZnVsbCByZXByb2JlIG9mIGFsbCBv dXRwdXRzLCBpbiBhbiBhc3luYyB3b3JrZXIuIFRlbGxpbmcgdXNlcnNwYWNlIHRvCj4gZG8gdGhp cyBieSBzZW5kaW5nIGFuIHVldmVudCB3YXMgdGhlIGNoZWFwZXN0IHdheSwgYnV0IGl0J2QgYmUg YmV0dGVyCj4gaWYgdGhlIGtlcm5lbCBjb3VsZCBkbyB0aGF0IGFzeW5jaHJvbm91c2x5IGFuZCBp bmZvcm0gdXNlcnNwYWNlIGFib3V0Cj4gdGhlIGV4YWN0IGNoYW5nZXMuIEFuZCB0aGVyZSdzIG1v cmUgdG8gcmVwcm9iZSB0aGFuIGp1c3QgdGhlIGVkaWQsIGFuZAo+IHdlIGRvbid0IHdhbnQgdG8g cmUtaW52ZW50IGEgc2VwYXJhdGUgcmVwcm9iZSBwYXRoIGp1c3QgZm9yIHJlc3VtZQo+IGxpa2Ug eW91IHN0YXJ0IGluIHlvdXIgcGF0Y2ggc2VyaWVzLiBTbyB5ZWFoIG15IHBsYW4gd2FzIG1pc3Np bmc6Cj4gCj4gLSBmb3JjZSBhIGZ1bGwgYXN5bmMgcmVwcm9iZSBhZnRlciByZXN1bWUgKG1heWJl IHdlIGNvdWxkIHJldXNlIHRoZQo+IHBvbGwgd29ya2VyIGZvciB0aGF0IGFzIGEgb25lLXNob3Qp LgoKRmlyc3Qgb2ZmLCBJIGRlZmluaXRlbHkgYWdyZWUgd2UgbmVlZCBhIHdheSB0byB0ZWxsIHVz ZXJzcGFjZSBleGFjdGx5CndoYXQgaGFzIGhhcHBlbmVkLiBJIHdhbnRlZCB0byBzdGFydCBhIGRp c2N1c3Npb24gYWJvdXQgdGhhdCBpbiBpLWctdApwYXRjaCAiVW5yZWxhdGVkIGhvdHBsdWcgdWV2 ZW50IG1hc2tpbmcgb3V0IGFjdHVhbCB0ZXN0IHJlc3VsdCIgYnV0IGl0CmRpZG4ndCBnZXQgbXVj aCB0cmFjdGlvbi4gRm9yIHRlc3RpbmcgcHVycG9zZXMsIGl0IGlzIHVuYWNjZXB0YWJsZSB0aGF0 CnVzZXJzcGFjZSBvbmx5IGdldHMgbm90aWZpZWQgdGhhdCAic29tZXRoaW5nIGhhcHBlbmVkIi4K ClN0aWxsLCBhcyBmYXIgYXMgSSBrbm93LCB1c2Vyc3BhY2UgaXMgZXhwZWN0ZWQgdG8gYXNrIGZv ciBhIGZ1bGwgcmVwcm9iZQp3aGVuIHNvbWV0aGluZyBoYXMgY2hhbmdlZCwgYW5kIHRoYXQgaXMg YXBwYXJlbnRseSBwYXJ0IG9mIHRoZSBEUk0gc3BlYywKc28gd2UgY2FuJ3QgZXhwZWN0IHRoYXQg aXQgY291bGQgcXVlcnkgZm9yIGFuIHVwZGF0ZSBvbiAib25seSB0aGUgdGhpbmdzCnRoYXQgY2hh bmdlZCIuCgpIb3dldmVyLCBvbmUgd2F5IHRvIG1pdGlnYXRlIHRoaXMgaXMgdG8gbWFrZSBzdXJl IHRoYXQgdGhlIGRyaXZlciBrbm93cwp3aGF0IGNoYW5nZWQgYW5kIG9ubHkgdXBkYXRlcyB0aGVz ZSB0aGluZ3Mgd2hlbiBhIGZ1bGwgcmVwcm9iZSBpcwpyZXF1ZXN0ZWQuIElzIHRoaXMgdGhlIGFw cHJvYWNoIHRoYXQgeW91IGhhdmUgaW4gbWluZD8KClRoZSBtZXRob2RvbG9neSBiZWhpbmQgbXkg c2VyaWVzIGZvbGxvd3Mgd2hhdCBpcyBjdXJyZW50bHkgZG9uZTogZGV0ZWN0CmNoYW5nZSBpbiB3 aGF0ZXZlciB3YXkgbmVjZXNzYXJ5LCBpbmZvcm0gdXNlcnNwYWNlIGFuZCBsZXQgaXQgdHJpZ2dl cgpmdWxsIHJlcHJvYmUuIElmIEknbSB1bmRlcnN0YW5kaW5nIGNvcnJlY3RseSwgd2hhdCB5b3Un cmUgc3VnZ2VzdGluZyBpcwppbnN0ZWFkIHRvIHJlcHJvYmUgd2hhdCBpcyBuZWVkZWQgb24gdGhl IGtlcm5lbCBzaWRlIHdoZW4gYW4gYXNzb2NpYXRlZApjaGFuZ2Ugb2NjdXJzIGluc3RlYWQgb2Yg aGF2aW5nIHVzZXJzcGFjZSB0cmlnZ2VyIGl0LCBhbmQgdGhlbiBsZXQKdXNlcnNwYWNlIGF3YXJl IHRoYXQgc29tZXRoaW5nIGNoYW5nZWQgYW5kIHJldHVybiB0aGUgImNhY2hlZCIgdXBkYXRlZApz dGF0dXMgd2hlbiB1c2Vyc3BhY2UgYXNrcyBmb3IgdGhlIHN1YnNlcXVlbnQgcmVwcm9iZS4gSXMg dGhhdCBjb3JyZWN0PwoKQ2hlZXJzLAoKUGF1bAoKPiA+ID4gPiAtLS0KPiA+ID4gPiAgZHJpdmVy cy9ncHUvZHJtL2RybV9lZGlkLmMgfCA0NQo+ID4gPiA+ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwo+ID4gPiA+ICBpbmNsdWRlL2RybS9kcm1fZWRpZC5oICAg ICB8ICAzICsrKwo+ID4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKykKPiA+ ID4gPiAKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMKPiA+ ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCj4gPiA+ID4gaW5kZXggNmJiNjMzN2Jl OTIwLi5mNmNlOGJjMjkwN2EgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9lZGlkLmMKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwo+ID4gPiA+ IEBAIC01MDM2LDMgKzUwMzYsNDggQEAgc3RhdGljIHZvaWQgZHJtX2dldF9kaXNwbGF5aWQoc3Ry dWN0Cj4gPiA+ID4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiA+ICAgICB9Cj4gPiA+ ID4gICAgIHJldHVybjsKPiA+ID4gPiAgfQo+ID4gPiA+ICsKPiA+ID4gPiArLyoqCj4gPiA+ID4g KyAqIGRybV9jaGVja19lZGlkX2NoYW5nZWQgLSBDaGVjayB3aGV0aGVyIHRoZSBFRElEIGNoYW5n ZWQKPiA+ID4gPiBzaW5jZQo+ID4gPiA+IHRoZSBsYXN0IHVwZGF0ZQo+ID4gPiA+ICsgKiBAY29u bmVjdG9yOiBjb25uZWN0b3Igd2UncmUgcHJvYmluZwo+ID4gPiA+ICsgKiBAYWRhcHRlcjogSTJD IGFkYXB0ZXIgdG8gdXNlIGZvciBEREMKPiA+ID4gPiArICoKPiA+ID4gPiArICogQ2hlY2sgd2hl dGhlciB0aGUgRURJRCBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IHRpbWUgaXQgd2FzCj4gPiA+ID4g dXBkYXRlZCBpbiB0aGUKPiA+ID4gPiArICogZHJtIGJsb2IgY2FjaGUuCj4gPiA+ID4gKyAqCj4g PiA+ID4gKyAqIFJldHVybjogQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBhIGNoYW5nZSBo YXBwZW5lZCBvcgo+ID4gPiA+IG5vdC4KPiA+ID4gPiArICovCj4gPiA+ID4gK2Jvb2wgZHJtX2No ZWNrX2VkaWRfY2hhbmdlZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKPiA+ ID4gPiArewo+ID4gPiA+ICsgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmVkaWRfYmxvYjsK PiA+ID4gPiArICAgc3RydWN0IGVkaWQgKmVkaWRfc3RvcmVkOwo+ID4gPiA+ICsgICBzdHJ1Y3Qg ZWRpZCAqZWRpZF9yZWFkOwo+ID4gPiA+ICsgICBpbnQgcmV0ID0gMDsKPiA+ID4gPiArCj4gPiA+ ID4gKyAgIGlmICghY29ubmVjdG9yLT5lZGlkX2Jsb2JfcHRyKQo+ID4gPiA+ICsgICAgICAgICAg IHJldHVybiBmYWxzZTsKPiA+ID4gPiArCj4gPiA+ID4gKyAgIGVkaWRfYmxvYiA9IGRybV9wcm9w ZXJ0eV9ibG9iX2dldChjb25uZWN0b3ItCj4gPiA+ID4gPiBlZGlkX2Jsb2JfcHRyKTsKPiA+ID4g PiAKPiA+ID4gPiArICAgaWYgKCFlZGlkX2Jsb2IpCj4gPiA+ID4gKyAgICAgICAgICAgcmV0dXJu IGZhbHNlOwo+ID4gPiA+ICsKPiA+ID4gPiArICAgaWYgKCFlZGlkX2Jsb2ItPmRhdGEgfHwgZWRp ZF9ibG9iLT5sZW5ndGggIT0gc2l6ZW9mKHN0cnVjdAo+ID4gPiA+IGVkaWQpKQo+ID4gPiA+ICsg ICAgICAgICAgIGdvdG8gb3V0Owo+ID4gPiA+ICsKPiA+ID4gPiArICAgZWRpZF9zdG9yZWQgPSAo c3RydWN0IGVkaWQgKikgZWRpZF9ibG9iLT5kYXRhOwo+ID4gPiA+ICsKPiA+ID4gPiArICAgZWRp ZF9yZWFkID0gZHJtX2dldF9lZGlkKGNvbm5lY3RvciwgYWRhcHRlcik7Cj4gPiA+ID4gKyAgIGlm ICghZWRpZF9yZWFkKQo+ID4gPiA+ICsgICAgICAgICAgIGdvdG8gb3V0Owo+ID4gPiA+ICsKPiA+ ID4gPiArICAgcmV0ID0gbWVtY21wKGVkaWRfc3RvcmVkLCBlZGlkX3JlYWQsIHNpemVvZihzdHJ1 Y3QgZWRpZCkpOwo+ID4gPiA+ICsKPiA+ID4gPiArICAga2ZyZWUoZWRpZF9yZWFkKTsKPiA+ID4g PiArCj4gPiA+ID4gK291dDoKPiA+ID4gPiArICAgZHJtX3Byb3BlcnR5X2Jsb2JfcHV0KGVkaWRf YmxvYik7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICByZXR1cm4gcmV0ICE9IDA7Cj4gPiA+ID4gK30K PiA+ID4gPiArRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2NoZWNrX2VkaWRfY2hhbmdlZCk7Cj4gPiA+ ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9lZGlkLmggYi9pbmNsdWRlL2RybS9kcm1f ZWRpZC5oCj4gPiA+ID4gaW5kZXggMWUxOTA4YTZiMWQ2Li41OTNhOTdiMjY5YzMgMTAwNjQ0Cj4g PiA+ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2VkaWQuaAo+ID4gPiA+ICsrKyBiL2luY2x1ZGUv ZHJtL2RybV9lZGlkLmgKPiA+ID4gPiBAQCAtNDg1LDQgKzQ4NSw3IEBAIHZvaWQgZHJtX2VkaWRf Z2V0X21vbml0b3JfbmFtZShzdHJ1Y3QgZWRpZAo+ID4gPiA+ICplZGlkLCBjaGFyICpuYW1lLAo+ ID4gPiA+ICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZHJtX21vZGVfZmluZF9kbXQoc3RydWN0 IGRybV9kZXZpY2UKPiA+ID4gPiAqZGV2LAo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCBoc2l6ZSwgaW50IHZzaXplLAo+ID4gPiA+IGludCBmcmVzaCwK PiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJiKTsK PiA+ID4gPiArYm9vbCBkcm1fY2hlY2tfZWRpZF9jaGFuZ2VkKHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGkyY19h ZGFwdGVyICphZGFwdGVyKTsKPiA+ID4gPiArCj4gPiA+ID4gICNlbmRpZiAvKiBfX0RSTV9FRElE X0hfXyAqLwo+ID4gPiA+IC0tCj4gPiA+ID4gMi4xMy4yCj4gPiA+ID4gCj4gPiA+ID4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4gPiBkcmktZGV2 ZWwgbWFpbGluZyBsaXN0Cj4gPiA+ID4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ ID4gPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCj4gPiA+IAo+ID4gPiAKPiA+IAo+ID4gLS0KPiA+IFBhdWwgS29jaWFsa293c2tpIDxw YXVsLmtvY2lhbGtvd3NraUBsaW51eC5pbnRlbC5jb20+Cj4gPiBJbnRlbCBGaW5sYW5kIE95IC0g QklDIDAzNTc2MDYtNCAtIFdlc3RlbmRpbmthdHUgNywgMDIxNjAgRXNwb28sCj4gPiBGaW5sYW5k Cj4gCj4gCj4gCi0tIApQYXVsIEtvY2lhbGtvd3NraSA8cGF1bC5rb2NpYWxrb3dza2lAbGludXgu aW50ZWwuY29tPgpJbnRlbCBGaW5sYW5kIE95IC0gQklDIDAzNTc2MDYtNCAtIFdlc3RlbmRpbmth dHUgNywgMDIxNjAgRXNwb28sIEZpbmxhbmQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751450AbdGYH7B (ORCPT ); Tue, 25 Jul 2017 03:59:01 -0400 Received: from mga05.intel.com ([192.55.52.43]:13452 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750811AbdGYH67 (ORCPT ); Tue, 25 Jul 2017 03:58:59 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.40,410,1496127600"; d="scan'208";a="882512716" Message-ID: <1500969535.1277.3.camel@linux.intel.com> Subject: Re: [PATCH 1/2] drm/edid: Add helper to detect whether EDID changed From: Paul Kocialkowski To: Daniel Vetter Cc: dri-devel , Linux Kernel Mailing List , intel-gfx , Daniel Vetter Date: Tue, 25 Jul 2017 10:58:55 +0300 In-Reply-To: References: <20170724145447.23449-1-paul.kocialkowski@linux.intel.com> <20170725065328.fhe75lpunqn7vcqv@phenom.ffwll.local> <1500967544.1277.1.camel@linux.intel.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo, Finland Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.24.3 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 2017-07-25 at 09:34 +0200, Daniel Vetter wrote: > On Tue, Jul 25, 2017 at 9:25 AM, Paul Kocialkowski > wrote: > > On Tue, 2017-07-25 at 08:53 +0200, Daniel Vetter wrote: > > > On Mon, Jul 24, 2017 at 05:54:46PM +0300, Paul Kocialkowski wrote: > > > > This adds a common drm helper to detect whether the EDID changed > > > > from > > > > the last known cached one. This is useful help detect that a > > > > monitor > > > > was > > > > changed during a suspend/resume cycle. > > > > > > > > When that happens (a monitor is replaced by another one during > > > > suspend), > > > > no hotplug event will be triggered so the change will not be > > > > caught > > > > at > > > > resume time. Detecting that the EDID changed allows detecting > > > > it. > > > > > > > > Signed-off-by: Paul Kocialkowski > > > com> > > > > > > I can't find the older mails I've typed about this, but the plan > > > we've > > > discussed a while back was: > > > - Add a generational counter to each connector, maybe even expose > > > it > > > to > > > userspace. > > > > > > - Increment that counter every time something changed, e.g. > > > connector->status in the propbe helpers, or when attaching a new > > > edid > > > with the set_edid helper. > > > > > > - Tada, no changes needed to drivers, and easily extensible to > > > other > > > things than edid! > > > > I don't see how it solves the problem here though. After a > > suspend/resume cycle, there is simply no indication that anything > > has > > changed when a monitor was replaced by another one, so I don't see > > how > > adding a counter in the mix would help. > > > > Could you provide more details about the reasoning? I feel like I'm > > missing something here. > > Your bug doesn't just exist over s/r, it's just much easier to observe > in s/r since users can take however long they want to with plugging in > a different monitor. But the same issue exists e.g. when we go from > hpd to polling because too much noise on the line. > > Wrt the suspend/resume issue: What we need to do on resume is do a > full reprobe of all outputs, in an async worker. Telling userspace to > do this by sending an uevent was the cheapest way, but it'd be better > if the kernel could do that asynchronously and inform userspace about > the exact changes. And there's more to reprobe than just the edid, and > we don't want to re-invent a separate reprobe path just for resume > like you start in your patch series. So yeah my plan was missing: > > - force a full async reprobe after resume (maybe we could reuse the > poll worker for that as a one-shot). First off, I definitely agree we need a way to tell userspace exactly what has happened. I wanted to start a discussion about that in i-g-t patch "Unrelated hotplug uevent masking out actual test result" but it didn't get much traction. For testing purposes, it is unacceptable that userspace only gets notified that "something happened". Still, as far as I know, userspace is expected to ask for a full reprobe when something has changed, and that is apparently part of the DRM spec, so we can't expect that it could query for an update on "only the things that changed". However, one way to mitigate this is to make sure that the driver knows what changed and only updates these things when a full reprobe is requested. Is this the approach that you have in mind? The methodology behind my series follows what is currently done: detect change in whatever way necessary, inform userspace and let it trigger full reprobe. If I'm understanding correctly, what you're suggesting is instead to reprobe what is needed on the kernel side when an associated change occurs instead of having userspace trigger it, and then let userspace aware that something changed and return the "cached" updated status when userspace asks for the subsequent reprobe. Is that correct? Cheers, Paul > > > > --- > > > > drivers/gpu/drm/drm_edid.c | 45 > > > > +++++++++++++++++++++++++++++++++++++++++++++ > > > > include/drm/drm_edid.h | 3 +++ > > > > 2 files changed, 48 insertions(+) > > > > > > > > diff --git a/drivers/gpu/drm/drm_edid.c > > > > b/drivers/gpu/drm/drm_edid.c > > > > index 6bb6337be920..f6ce8bc2907a 100644 > > > > --- a/drivers/gpu/drm/drm_edid.c > > > > +++ b/drivers/gpu/drm/drm_edid.c > > > > @@ -5036,3 +5036,48 @@ static void drm_get_displayid(struct > > > > drm_connector *connector, > > > > } > > > > return; > > > > } > > > > + > > > > +/** > > > > + * drm_check_edid_changed - Check whether the EDID changed > > > > since > > > > the last update > > > > + * @connector: connector we're probing > > > > + * @adapter: I2C adapter to use for DDC > > > > + * > > > > + * Check whether the EDID changed since the last time it was > > > > updated in the > > > > + * drm blob cache. > > > > + * > > > > + * Return: A boolean indicating whether a change happened or > > > > not. > > > > + */ > > > > +bool drm_check_edid_changed(struct drm_connector *connector, > > > > + struct i2c_adapter *adapter) > > > > +{ > > > > + struct drm_property_blob *edid_blob; > > > > + struct edid *edid_stored; > > > > + struct edid *edid_read; > > > > + int ret = 0; > > > > + > > > > + if (!connector->edid_blob_ptr) > > > > + return false; > > > > + > > > > + edid_blob = drm_property_blob_get(connector- > > > > > edid_blob_ptr); > > > > > > > > + if (!edid_blob) > > > > + return false; > > > > + > > > > + if (!edid_blob->data || edid_blob->length != sizeof(struct > > > > edid)) > > > > + goto out; > > > > + > > > > + edid_stored = (struct edid *) edid_blob->data; > > > > + > > > > + edid_read = drm_get_edid(connector, adapter); > > > > + if (!edid_read) > > > > + goto out; > > > > + > > > > + ret = memcmp(edid_stored, edid_read, sizeof(struct edid)); > > > > + > > > > + kfree(edid_read); > > > > + > > > > +out: > > > > + drm_property_blob_put(edid_blob); > > > > + > > > > + return ret != 0; > > > > +} > > > > +EXPORT_SYMBOL_GPL(drm_check_edid_changed); > > > > diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h > > > > index 1e1908a6b1d6..593a97b269c3 100644 > > > > --- a/include/drm/drm_edid.h > > > > +++ b/include/drm/drm_edid.h > > > > @@ -485,4 +485,7 @@ void drm_edid_get_monitor_name(struct edid > > > > *edid, char *name, > > > > struct drm_display_mode *drm_mode_find_dmt(struct drm_device > > > > *dev, > > > > int hsize, int vsize, > > > > int fresh, > > > > bool rb); > > > > +bool drm_check_edid_changed(struct drm_connector *connector, > > > > + struct i2c_adapter *adapter); > > > > + > > > > #endif /* __DRM_EDID_H__ */ > > > > -- > > > > 2.13.2 > > > > > > > > _______________________________________________ > > > > dri-devel mailing list > > > > dri-devel@lists.freedesktop.org > > > > https://lists.freedesktop.org/mailman/listinfo/dri-devel > > > > > > > > > > -- > > Paul Kocialkowski > > Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo, > > Finland > > > -- Paul Kocialkowski Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo, Finland