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: Wed, 26 Jul 2017 18:09:38 +0300 Message-ID: <1501081778.13950.4.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> <1500969535.1277.3.camel@linux.intel.com> <20170725081652.j43grc7oeyitr4tl@phenom.ffwll.local> <1500985084.1277.7.camel@linux.intel.com> <20170725155013.43mtpbpbpq26ywsh@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170725155013.43mtpbpbpq26ywsh@phenom.ffwll.local> 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 T24gVHVlLCAyMDE3LTA3LTI1IGF0IDE3OjUwICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ IE9uIFR1ZSwgSnVsIDI1LCAyMDE3IGF0IDAzOjE4OjA0UE0gKzAzMDAsIFBhdWwgS29jaWFsa293 c2tpIHdyb3RlOgo+ID4gT24gVHVlLCAyMDE3LTA3LTI1IGF0IDEwOjE2ICswMjAwLCBEYW5pZWwg VmV0dGVyIHdyb3RlOgo+ID4gPiBPbiBUdWUsIEp1bCAyNSwgMjAxNyBhdCAxMDo1ODo1NUFNICsw MzAwLCBQYXVsIEtvY2lhbGtvd3NraSB3cm90ZToKPiA+ID4gPiBPbiBUdWUsIDIwMTctMDctMjUg YXQgMDk6MzQgKzAyMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiA+ID4gPiBPbiBUdWUsIEp1 bCAyNSwgMjAxNyBhdCA5OjI1IEFNLCBQYXVsIEtvY2lhbGtvd3NraQo+ID4gPiA+ID4gPHBhdWwu a29jaWFsa293c2tpQGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4gPiA+ID4gPiA+IE9uIFR1ZSwg MjAxNy0wNy0yNSBhdCAwODo1MyArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID4gPiA+ ID4gPiBPbiBNb24sIEp1bCAyNCwgMjAxNyBhdCAwNTo1NDo0NlBNICswMzAwLCBQYXVsCj4gPiA+ ID4gPiA+ID4gS29jaWFsa293c2tpCj4gPiA+ID4gPiA+ID4gd3JvdGU6Cj4gPiA+ID4gPiA+ID4g PiBUaGlzIGFkZHMgYSBjb21tb24gZHJtIGhlbHBlciB0byBkZXRlY3Qgd2hldGhlciB0aGUgRURJ RAo+ID4gPiA+ID4gPiA+ID4gY2hhbmdlZAo+ID4gPiA+ID4gPiA+ID4gZnJvbQo+ID4gPiA+ID4g PiA+ID4gdGhlIGxhc3Qga25vd24gY2FjaGVkIG9uZS4gVGhpcyBpcyB1c2VmdWwgaGVscCBkZXRl Y3QKPiA+ID4gPiA+ID4gPiA+IHRoYXQgYQo+ID4gPiA+ID4gPiA+ID4gbW9uaXRvcgo+ID4gPiA+ ID4gPiA+ID4gd2FzCj4gPiA+ID4gPiA+ID4gPiBjaGFuZ2VkIGR1cmluZyBhIHN1c3BlbmQvcmVz dW1lIGN5Y2xlLgo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBXaGVuIHRoYXQgaGFw cGVucyAoYSBtb25pdG9yIGlzIHJlcGxhY2VkIGJ5IGFub3RoZXIgb25lCj4gPiA+ID4gPiA+ID4g PiBkdXJpbmcKPiA+ID4gPiA+ID4gPiA+IHN1c3BlbmQpLAo+ID4gPiA+ID4gPiA+ID4gbm8gaG90 cGx1ZyBldmVudCB3aWxsIGJlIHRyaWdnZXJlZCBzbyB0aGUgY2hhbmdlIHdpbGwKPiA+ID4gPiA+ ID4gPiA+IG5vdCBiZQo+ID4gPiA+ID4gPiA+ID4gY2F1Z2h0Cj4gPiA+ID4gPiA+ID4gPiBhdAo+ ID4gPiA+ID4gPiA+ID4gcmVzdW1lIHRpbWUuIERldGVjdGluZyB0aGF0IHRoZSBFRElEIGNoYW5n ZWQgYWxsb3dzCj4gPiA+ID4gPiA+ID4gPiBkZXRlY3RpbmcKPiA+ID4gPiA+ID4gPiA+IGl0Lgo+ ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBQYXVsIEtvY2lh bGtvd3NraSA8cGF1bC5rb2NpYWxrb3dza2lAbGludQo+ID4gPiA+ID4gPiA+ID4geC5pbgo+ID4g PiA+ID4gPiA+ID4gdGVsLgo+ID4gPiA+ID4gPiA+ID4gY29tPgo+ID4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiA+IEkgY2FuJ3QgZmluZCB0aGUgb2xkZXIgbWFpbHMgSSd2ZSB0eXBlZCBhYm91dCB0 aGlzLCBidXQKPiA+ID4gPiA+ID4gPiB0aGUKPiA+ID4gPiA+ID4gPiBwbGFuCj4gPiA+ID4gPiA+ ID4gd2UndmUKPiA+ID4gPiA+ID4gPiBkaXNjdXNzZWQgYSB3aGlsZSBiYWNrIHdhczoKPiA+ID4g PiA+ID4gPiAtIEFkZCBhIGdlbmVyYXRpb25hbCBjb3VudGVyIHRvIGVhY2ggY29ubmVjdG9yLCBt YXliZSBldmVuCj4gPiA+ID4gPiA+ID4gZXhwb3NlCj4gPiA+ID4gPiA+ID4gaXQKPiA+ID4gPiA+ ID4gPiB0bwo+ID4gPiA+ID4gPiA+ICAgdXNlcnNwYWNlLgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiA+IC0gSW5jcmVtZW50IHRoYXQgY291bnRlciBldmVyeSB0aW1lIHNvbWV0aGluZyBjaGFu Z2VkLAo+ID4gPiA+ID4gPiA+IGUuZy4KPiA+ID4gPiA+ID4gPiAgIGNvbm5lY3Rvci0+c3RhdHVz IGluIHRoZSBwcm9wYmUgaGVscGVycywgb3Igd2hlbgo+ID4gPiA+ID4gPiA+IGF0dGFjaGluZyBh Cj4gPiA+ID4gPiA+ID4gbmV3Cj4gPiA+ID4gPiA+ID4gZWRpZAo+ID4gPiA+ID4gPiA+ICAgd2l0 aCB0aGUgc2V0X2VkaWQgaGVscGVyLgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IC0gVGFk YSwgbm8gY2hhbmdlcyBuZWVkZWQgdG8gZHJpdmVycywgYW5kIGVhc2lseQo+ID4gPiA+ID4gPiA+ IGV4dGVuc2libGUgdG8KPiA+ID4gPiA+ID4gPiBvdGhlcgo+ID4gPiA+ID4gPiA+ICAgdGhpbmdz IHRoYW4gZWRpZCEKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IEkgZG9uJ3Qgc2VlIGhvdyBpdCBz b2x2ZXMgdGhlIHByb2JsZW0gaGVyZSB0aG91Z2guIEFmdGVyIGEKPiA+ID4gPiA+ID4gc3VzcGVu ZC9yZXN1bWUgY3ljbGUsIHRoZXJlIGlzIHNpbXBseSBubyBpbmRpY2F0aW9uIHRoYXQKPiA+ID4g PiA+ID4gYW55dGhpbmcKPiA+ID4gPiA+ID4gaGFzCj4gPiA+ID4gPiA+IGNoYW5nZWQgd2hlbiBh IG1vbml0b3Igd2FzIHJlcGxhY2VkIGJ5IGFub3RoZXIgb25lLCBzbyBJCj4gPiA+ID4gPiA+IGRv bid0Cj4gPiA+ID4gPiA+IHNlZQo+ID4gPiA+ID4gPiBob3cKPiA+ID4gPiA+ID4gYWRkaW5nIGEg Y291bnRlciBpbiB0aGUgbWl4IHdvdWxkIGhlbHAuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBD b3VsZCB5b3UgcHJvdmlkZSBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIHJlYXNvbmluZz8gSSBmZWVs Cj4gPiA+ID4gPiA+IGxpa2UKPiA+ID4gPiA+ID4gSSdtCj4gPiA+ID4gPiA+IG1pc3Npbmcgc29t ZXRoaW5nIGhlcmUuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IFlvdXIgYnVnIGRvZXNuJ3QganVzdCBl eGlzdCBvdmVyIHMvciwgaXQncyBqdXN0IG11Y2ggZWFzaWVyIHRvCj4gPiA+ID4gPiBvYnNlcnZl Cj4gPiA+ID4gPiBpbiBzL3Igc2luY2UgdXNlcnMgY2FuIHRha2UgaG93ZXZlciBsb25nIHRoZXkg d2FudCB0byB3aXRoCj4gPiA+ID4gPiBwbHVnZ2luZyBpbgo+ID4gPiA+ID4gYSBkaWZmZXJlbnQg bW9uaXRvci4gQnV0IHRoZSBzYW1lIGlzc3VlIGV4aXN0cyBlLmcuIHdoZW4gd2UgZ28KPiA+ID4g PiA+IGZyb20KPiA+ID4gPiA+IGhwZCB0byBwb2xsaW5nIGJlY2F1c2UgdG9vIG11Y2ggbm9pc2Ug b24gdGhlIGxpbmUuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IFdydCB0aGUgc3VzcGVuZC9yZXN1bWUg aXNzdWU6IFdoYXQgd2UgbmVlZCB0byBkbyBvbiByZXN1bWUgaXMKPiA+ID4gPiA+IGRvIGEKPiA+ ID4gPiA+IGZ1bGwgcmVwcm9iZSBvZiBhbGwgb3V0cHV0cywgaW4gYW4gYXN5bmMgd29ya2VyLiBU ZWxsaW5nCj4gPiA+ID4gPiB1c2Vyc3BhY2UKPiA+ID4gPiA+IHRvCj4gPiA+ID4gPiBkbyB0aGlz IGJ5IHNlbmRpbmcgYW4gdWV2ZW50IHdhcyB0aGUgY2hlYXBlc3Qgd2F5LCBidXQgaXQnZCBiZQo+ ID4gPiA+ID4gYmV0dGVyCj4gPiA+ID4gPiBpZiB0aGUga2VybmVsIGNvdWxkIGRvIHRoYXQgYXN5 bmNocm9ub3VzbHkgYW5kIGluZm9ybQo+ID4gPiA+ID4gdXNlcnNwYWNlCj4gPiA+ID4gPiBhYm91 dAo+ID4gPiA+ID4gdGhlIGV4YWN0IGNoYW5nZXMuIEFuZCB0aGVyZSdzIG1vcmUgdG8gcmVwcm9i ZSB0aGFuIGp1c3QgdGhlCj4gPiA+ID4gPiBlZGlkLAo+ID4gPiA+ID4gYW5kCj4gPiA+ID4gPiB3 ZSBkb24ndCB3YW50IHRvIHJlLWludmVudCBhIHNlcGFyYXRlIHJlcHJvYmUgcGF0aCBqdXN0IGZv cgo+ID4gPiA+ID4gcmVzdW1lCj4gPiA+ID4gPiBsaWtlIHlvdSBzdGFydCBpbiB5b3VyIHBhdGNo IHNlcmllcy4gU28geWVhaCBteSBwbGFuIHdhcwo+ID4gPiA+ID4gbWlzc2luZzoKPiA+ID4gPiA+ IAo+ID4gPiA+ID4gLSBmb3JjZSBhIGZ1bGwgYXN5bmMgcmVwcm9iZSBhZnRlciByZXN1bWUgKG1h eWJlIHdlIGNvdWxkCj4gPiA+ID4gPiByZXVzZQo+ID4gPiA+ID4gdGhlCj4gPiA+ID4gPiBwb2xs IHdvcmtlciBmb3IgdGhhdCBhcyBhIG9uZS1zaG90KS4KPiA+ID4gPiAKPiA+ID4gPiBGaXJzdCBv ZmYsIEkgZGVmaW5pdGVseSBhZ3JlZSB3ZSBuZWVkIGEgd2F5IHRvIHRlbGwgdXNlcnNwYWNlCj4g PiA+ID4gZXhhY3RseQo+ID4gPiA+IHdoYXQgaGFzIGhhcHBlbmVkLiBJIHdhbnRlZCB0byBzdGFy dCBhIGRpc2N1c3Npb24gYWJvdXQgdGhhdCBpbgo+ID4gPiA+IGktZy0KPiA+ID4gPiB0Cj4gPiA+ ID4gcGF0Y2ggIlVucmVsYXRlZCBob3RwbHVnIHVldmVudCBtYXNraW5nIG91dCBhY3R1YWwgdGVz dCByZXN1bHQiCj4gPiA+ID4gYnV0Cj4gPiA+ID4gaXQKPiA+ID4gPiBkaWRuJ3QgZ2V0IG11Y2gg dHJhY3Rpb24uIEZvciB0ZXN0aW5nIHB1cnBvc2VzLCBpdCBpcwo+ID4gPiA+IHVuYWNjZXB0YWJs ZQo+ID4gPiA+IHRoYXQKPiA+ID4gPiB1c2Vyc3BhY2Ugb25seSBnZXRzIG5vdGlmaWVkIHRoYXQg InNvbWV0aGluZyBoYXBwZW5lZCIuCj4gPiA+ID4gCj4gPiA+ID4gU3RpbGwsIGFzIGZhciBhcyBJ IGtub3csIHVzZXJzcGFjZSBpcyBleHBlY3RlZCB0byBhc2sgZm9yIGEgZnVsbAo+ID4gPiA+IHJl cHJvYmUKPiA+ID4gPiB3aGVuIHNvbWV0aGluZyBoYXMgY2hhbmdlZCwgYW5kIHRoYXQgaXMgYXBw YXJlbnRseSBwYXJ0IG9mIHRoZQo+ID4gPiA+IERSTQo+ID4gPiA+IHNwZWMsCj4gPiA+ID4gc28g d2UgY2FuJ3QgZXhwZWN0IHRoYXQgaXQgY291bGQgcXVlcnkgZm9yIGFuIHVwZGF0ZSBvbiAib25s eQo+ID4gPiA+IHRoZQo+ID4gPiA+IHRoaW5ncwo+ID4gPiA+IHRoYXQgY2hhbmdlZCIuCj4gPiA+ IAo+ID4gPiBXZSBjYW4gdXBkYXRlIHRoYXQgc3BlYyBpbiBhIGJhY2t3YXJkcyBjb21wYXRpYmxl IHdheS4gRS5nLiB3ZSBjYW4KPiA+ID4gYXNrCj4gPiA+IGZvcgo+ID4gPiB0aGUgY3VycmVudCBw cm9wZXJ0aWVzIHdpdGhvdXQgZm9yY2luZyBhIHJlcHJvYmUgKHdvbid0IGV2ZW4gY2FsbAo+ID4g PiBkb3duCj4gPiA+IGludG8gdGhlIGRyaXZlciksIGFuZCB1c2Vyc3BhY2UgY291bGQgdXNlIHRo YXQgdG8gY2hlY2sgd2hpY2gKPiA+ID4gY29ubmVjdG9yCj4gPiA+IGhhcyBhbiBpbmNyZW1lbnRl ZCBlcG9jaGUgY291bnRlciBzaW5jZSB0aGUgbGFzdCB0aW1lIGl0IHNhbXBsZWQKPiA+ID4gdGhp bmdzLgo+ID4gPiBUaGVuIGl0IGNhbiByZXByb2JlIGp1c3QgdGhhdCBvbmUuCj4gPiA+IAo+ID4g PiBPbGQgdXNlcnNwYWNlIHdvdWxkbid0IGtub3cgYWJvdXQgdGhpcywgYW5kIHdvdWxkIGtlZXAg d29ya2luZyBhcy0KPiA+ID4gaXMuCj4gPiAKPiA+IFNvIHRoZSBsZXZlbCBvZiBkZXRhaWwgeW91 J3JlIGFpbWluZyBhdCBwcm92aWRpbmcgdXNlcnNwYWNlIGlzCj4gPiAiY29ubmVjdG9yIGZvbyBj aGFuZ2VkIiB0aGVuPyBJIGFncmVlIGl0IGlzIGJldHRlciB0aGFuIHRoZSBjdXJyZW50Cj4gPiAi c29tZSBjb25uZWN0b3IocykgY2hhbmdlZCIsIGJ1dCB3aGF0IEknZCBsaWtlIHRvIHNlZSBmb3Ig cHJvcGVyCj4gPiB0ZXN0aW5nCj4gPiBpcyBhIHdheSB0byBmaW5kIG91dCAiYmFyIGZvciBjb25u ZWN0b3IgZm9vIGNoYW5nZWQiLgo+IAo+IElmIHlvdSB3YW50IHRhaHQgbGV2ZWwgb2YgZGV0YWls IHlvdSBuZWVkIGludHJvc3BlY3Rpb24gaW4gYSBpbi1rZXJuZWwKPiBzZWxmdGVzdCBJIHRoaW5r LiBXZSdkIG5lZWQgdG8gcmF0aGVyIG1hc3NpdmVseSBjaGFuZ2UvZXh0ZW5kIHRoZSB1YXBpCj4g dG8KPiBzdXBwb3J0IHRoYXQgbGV2ZWwgb2YgdGVzdGluZyB0aHJvdWdoIHRoZSB1YXBpLCBhbmQg dGh1cyBmYXIgbm8gb25lCj4gZWxzZQo+IGlzIGFza2luZyBmb3IgaXQgd2l0aCBhIHJlYWwgdXNl LWNhc2UuCgpJJ20gZnJhbmtseSBzdXJwcmlzZWQgdGhhdCBubyBvbmUgaGFzIGNvbXBsYWluZWQg YWJvdXQgdGhpcyB5ZXQhCgpUaGUgY3VycmVudCBsZXZlbCBvZiAobGFjayBvZikgZGV0YWlsIGFi b3V0IHdoYXQgaXMgaGFwcGVuaW5nIHdoZW4gYQpob3RwbHVnIGV2ZW50IGlzIHRyaWdnZXJlZCBt YWtlcyB0ZXN0aW5nIGZvciB2YXJpb3VzIHRoaW5ncyByZWFsbHkgaGFyZC4KQnV0IEkgc3VwcG9z ZSBpdCBtYWtlcyBzZW5zZSB3aXRoIHRoZSAicmVwcm9iZSBldmVyeXRoaW5nIGFsbCB0aGUgdGlt ZSIKYXBwcm9hY2ggOykKCkZvciBpbnN0YW5jZSwgaXQgd291bGRuJ3QgaHVydCB0byBhZGQgYSBS RUFTT049Zm9vIGZpZWxkIHRvIHRoZSB1ZXZlbnQsCmluIGFkZGl0aW9uIHRvIEhPVFBMVUc9MSwg d2hpY2ggd291bGQgbW9zdCBjZXJ0YWlubHkgbWFpbnRhaW4KY29tcGF0aWJpbGl0eSB3aXRoIGN1 cnJlbnQgdXNlcnNwYWNlLiBJJ20gbm90IHN1cmUgdGhhdCB3b3VsZCB3b3JrIG91dAp0b28gd2Vs bCBpZiB1ZXZlbnRzIGFyZSB0byBiZSBzdGFja2VkIHRvZ2V0aGVyIHRob3VnaC4KCj4gPiA+ID4g SG93ZXZlciwgb25lIHdheSB0byBtaXRpZ2F0ZSB0aGlzIGlzIHRvIG1ha2Ugc3VyZSB0aGF0IHRo ZQo+ID4gPiA+IGRyaXZlcgo+ID4gPiA+IGtub3dzCj4gPiA+ID4gd2hhdCBjaGFuZ2VkIGFuZCBv bmx5IHVwZGF0ZXMgdGhlc2UgdGhpbmdzIHdoZW4gYSBmdWxsIHJlcHJvYmUKPiA+ID4gPiBpcwo+ ID4gPiA+IHJlcXVlc3RlZC4gSXMgdGhpcyB0aGUgYXBwcm9hY2ggdGhhdCB5b3UgaGF2ZSBpbiBt aW5kPwo+ID4gPiA+IAo+ID4gPiA+IFRoZSBtZXRob2RvbG9neSBiZWhpbmQgbXkgc2VyaWVzIGZv bGxvd3Mgd2hhdCBpcyBjdXJyZW50bHkgZG9uZToKPiA+ID4gPiBkZXRlY3QKPiA+ID4gPiBjaGFu Z2UgaW4gd2hhdGV2ZXIgd2F5IG5lY2Vzc2FyeSwgaW5mb3JtIHVzZXJzcGFjZSBhbmQgbGV0IGl0 Cj4gPiA+ID4gdHJpZ2dlcgo+ID4gPiA+IGZ1bGwgcmVwcm9iZS4gSWYgSSdtIHVuZGVyc3RhbmRp bmcgY29ycmVjdGx5LCB3aGF0IHlvdSdyZQo+ID4gPiA+IHN1Z2dlc3RpbmcKPiA+ID4gPiBpcwo+ ID4gPiA+IGluc3RlYWQgdG8gcmVwcm9iZSB3aGF0IGlzIG5lZWRlZCBvbiB0aGUga2VybmVsIHNp ZGUgd2hlbiBhbgo+ID4gPiA+IGFzc29jaWF0ZWQKPiA+ID4gPiBjaGFuZ2Ugb2NjdXJzIGluc3Rl YWQgb2YgaGF2aW5nIHVzZXJzcGFjZSB0cmlnZ2VyIGl0LCBhbmQgdGhlbgo+ID4gPiA+IGxldAo+ ID4gPiA+IHVzZXJzcGFjZSBhd2FyZSB0aGF0IHNvbWV0aGluZyBjaGFuZ2VkIGFuZCByZXR1cm4g dGhlICJjYWNoZWQiCj4gPiA+ID4gdXBkYXRlZAo+ID4gPiA+IHN0YXR1cyB3aGVuIHVzZXJzcGFj ZSBhc2tzIGZvciB0aGUgc3Vic2VxdWVudCByZXByb2JlLiBJcyB0aGF0Cj4gPiA+ID4gY29ycmVj dD8KPiA+ID4gCj4gPiA+IFRoZXJlJ3MgdHdvIHRoaW5nczogdGhlIHVhcGkgZGlzY3Vzc2lvbiBh bmQgdGhlIGludGVybmFsCj4gPiA+IGltcGxlbWVudGF0aW9uLAo+ID4gPiBpbW8gdGhlaXIgc2Vw YXJhdGUgKGJ1dCBzb21ld2hhdCBjb25uZWN0ZWQpIHRvcGljcy4KPiA+ID4gCj4gPiA+IC0gRm9y IHRoZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBvZiBkZXRlY3RpbmcgZWRpZCBjaGFuZ2VzIEkK PiA+ID4gZG9uJ3QKPiA+ID4gbGlrZQo+ID4gPiAgIHlvdXIgYXBwcm9hY2ggb2Ygcm9sbGluZyBh IGNvbXBsZXRlbHkgbmV3IGRldGVjdCBwYXRoIGp1c3QgZm9yCj4gPiA+IHJlc3VtZS4KPiA+ID4g ICBJIHRoaW5rIHdlIGNhbiB2ZXJ5IHdlbGwgaW50ZWdyYXRlIHRoYXQgaW50byB0aGUgZXhpc3Rp bmcgcHJvYmUKPiA+ID4gY29kZQo+ID4gPiAgIHVzaW5nIHRoZSBhcHByb2FjaCBJJ3ZlIGxhaWQg b3V0Lgo+ID4gPiAKPiA+ID4gLSBUaGVyZSdzIG1vcmUgdGhhbiBqdXN0IGVkaWQgKGUuZy4gaGRj cCBzdGF0dXMsIHZhcmlvdXMgc3R1ZmYKPiA+ID4gdGhhdCdzCj4gPiA+ICAgaGFuZGxlZCBpbiBk cCBhdXggZm9yIERQIHNpbmtzKSwgYW5kIEkgdGhpbmsgYSBnZW5lcmFsIG1lY2hhbmlzbQo+ID4g PiBmb3IKPiA+ID4gICB0cmFja2luZyB0aGF0IHNvbWV0aGluZyBjaGFuZ2VkIHdpbGwgYmUgdXNl ZnVsIGZvciB0aGUgaW50ZXJuYWwKPiA+ID4gICBpbXBsZW1lbnRhdGlvbi4gVGhlIG90aGVyIHBs YW4gd291bGQgYmUgdGhhdCB3ZSBoYXZlIHRvIHdpcmUgYQo+ID4gPiBib29sCj4gPiA+ICAgY2hh bmdlZCB0aHJvdWdoIHRoZSBlbnRpcmUgcHJvYmUgc3RhY2ssIGFuZCBtYWtlIHN1cmUgaXQncwo+ ID4gPiBoYW5kbGVkCj4gPiA+ICAgY29ycmVjdGx5IGV2ZXJ5d2hlcmUsIHdoaWNoIGlzIGEpIGEg bG90IG1vcmUgd29yayBiKSBtb3JlCj4gPiA+IGZyYWdpbGUuCj4gPiA+IERvaW5nCj4gPiA+ICAg YSBjb25uZWN0b3ItPnN0YXR1c19lcG9jaCsrIGV2ZXJ5d2hlcmUgd2UgZGV0ZWN0IGEgY2hhbmdl IGlzCj4gPiA+IF9tdWNoXwo+ID4gPiAgIHNpbXBsZXIuCj4gPiAKPiA+IFNvIHRvIHN1bW1hcml6 ZSwgdGhlIGZvbGxvd2luZyB3b3VsZCBoYXBwZW46IGFuIGFzeW5jIHdvcmtlciB3b3VsZAo+ID4g ZGV0ZWN0IHdoZXRoZXIgc29tZXRoaW5nIGNoYW5nZWQsIHRoZW4gaW5jcmVhc2UgdGhlIGNvdW50 ZXIgZm9yIHRoYXQKPiA+IGNvbm5lY3RvciBhbmQgbm90aWZ5IHVzZXJzcGFjZSwgd2hpY2ggd291 bGQgdHJpZ2dlciBmdWxsIHJlcHJvYmUgb2YKPiA+IHRoYXQKPiA+IGNvbm5lY3RvciBvbmx5LiBM ZWdhY3kgdXNlcnNwYWNlIHdvdWxkIGp1c3QgdHJpZ2dlciBmdWxsIHJlcHJvYmUgZm9yCj4gPiBh bGwKPiA+IGNvbm5lY3RvcnMuCj4gPiAKPiA+IEkgYW0gc3RpbGwgdW5kZXIgdGhlIGltcHJlc3Np b24gdGhhdCB5b3UnZCBsaWtlIHRoZSBmdWxsIHJlcHJvYmUgdG8KPiA+IGJlCj4gPiBkb25lIG9u IHRoZSBrZXJuZWwncyBhc3luYyB3b3JrZXIsIHRvIGRldGVjdCB0aGF0IGUuZy4gRURJRCBjaGFu Z2VkLgo+ID4gQnV0Cj4gPiB0aGVuIHVzZXJzcGFjZSBpcyBnb2luZyB0byBmdWxseSByZXByb2Jl IGFnYWluLCBzbyBpdCB3aWxsIGJlCj4gPiBkdXBsaWNhdGVkLiBVbmxlc3MgdGhlIGtlcm5lbCBh bHNvIGtlZXBzIGEgcmVmZXJlbmNlIG9mIHRoZSBsYXN0Cj4gPiB0aW1lCj4gPiB0aGUgY291bnRl ciB3YXMgcmVhZCBmcm9tIHVzZXJzcGFjZSwgdG8gZGV0ZXJtaW5lIHdoZW4gdG8gc2tpcCBmdWxs Cj4gPiByZXByb2JlIHdoZW4gaXQgaXMgYXNrZWQgZnJvbSB1c2Vyc3BhY2U/IFRoYXQgZmVlbHMg cHJldHR5IHNpbWlsYXIKPiA+IHRvCj4gPiBoYXZpbmcgYSBib29sIGluZGljYXRpbmcgY2hhbmdl Lgo+ID4gCj4gPiBNeSBhcHByb2FjaCBoZXJlIHdhcyB0byBsb29rIHNwZWNpZmljYWxseSBmb3Ig dGhlIHRoaW5nIHRoYXQgY2FuCj4gPiBjaGFuZ2UKPiA+IGluIHRoZSBhc3luYyB3b3JrZXIgKG9u bHkgRURJRCB3aXRoIHRoaXMgY2hhbmdlLCBidXQgaXQgY291bGQgYmUKPiA+IGV4dGVuZGVkIGZv ciB0aGUgb3RoZXIgdGhpbmdzIHlvdSBtZW50aW9uZWQpIGFzIHRvIHJlZHVjZSB0aGUKPiA+IGR1 cGxpY2F0aW9uIGFzIG11Y2ggYXMgcG9zc2libGUuCj4gPiAKPiA+ID4gLSBGb3IgdGhlIHVhcGkg Y2hhbmdlOiBXZSBhbHJlYWR5IHN1cHBvcnQgcmV0dXJuaW5nIHRoZSBjYWNoZWQKPiA+ID4gc3R1 ZmYsCj4gPiA+IHRoZQo+ID4gPiAgIG9ubHkgYml0IHRoYXQncyBtaXNzaW5nIGlzIHRoZSBlcG9j aCBjb3VudGVyIHRvIGxldCB1c2Vyc3BhY2UKPiA+ID4ga25vdwo+ID4gPiB3aGVyZQo+ID4gPiAg IGl0IG1pZ2h0IG5lZWQgdG8gZG8gYSBmdWxsIHJlcHJvYmUuIE9yIG1heWJlIHdlJ2xsIGp1c3Qg c3BlYwo+ID4gPiB0aGF0IGEKPiA+ID4gZnVsbAo+ID4gPiAgIHJlcHJvYmUgaXNuJ3QgbmVjZXNz YXJ5IGFmdGVyIGEgaHBkIGV2ZW50IChidXQgdGhhdCdzIHVubGlrZWx5Cj4gPiA+IHRvCj4gPiA+ IHdvcmsKPiA+ID4gICBvdXQgZ2l2ZW4gaG93IG1hbnkgYnVncyB3ZSdkIG5lZWQgdG8gZml4IGZp cnN0KS4KPiA+IAo+ID4gT2theSwgdGhhbmtzIGZvciB0aGUgYWRkaXRpb25hbCBleHBsYW5hdGlv bi4gSSB0aGluayBJJ20gZ2V0dGluZyBhCj4gPiBiZXR0ZXIgZ3Jhc3Agb24geW91ciBpZGVhLgo+ IAo+IFllYWgsIHRoZSBmdWxsIHJlcHJvYmUgaXNuJ3QgbmVlZGVkIGlmIHlvdSB3ZSBzcGVjIHRo YXQgYXMgdGhlIG5ldwo+IGZhbmN5Cj4gYmVoYXZpb3VyLiBXZSBhbHJlYWR5IHN1cHBvcnQgZ2V0 dGluZyB0aGUgY2FjaGVkIHZhbHVlcyB0aHJvdWdoCj4gZHJtTW9kZUdldENvbm5lY3RvckN1cnJl bnQoKSwgd2l0aG91dCBmb3JjaW5nIGEgZnVsbCByZXByb2JlLgoKU28gdGhlbiB1c2Vyc3BhY2Ug Z2V0cyB0aGUgY2FjaGVkIHZhbHVlcyBhbmQgY29uc2lkZXJzIHRoZW0gYXMgImFscmVhZHkKdXBk YXRlZCIgaWYgdGhlIGNvdW50ZXIgaGFzIGluY3JlYXNlZCwgYW5kIHRoZW4gc3RvcHMgdGhlcmUg YW5kIGRvZXNuJ3QKdHJpZ2dlciBhIGZ1bGwgcmVwcm9iZSAod2hpY2ggd2FzIGFscmVhZHkgZG9u ZSBieSB0aGUga2VybmVsJ3Mgd29ya2VyKT8KClNvIGFsbCBpbiBhbGwsIHRoZSB3aW4gaGVyZSBp cyByZXByb2Jpbmcgb25seSAxIGNvbm5lY3RvciBpbnN0ZWFkIG9mCnJlcHJvYmluZyB0aGVtIGFs bC4gVGhlIHNhbWUgY291bGQgYmUgYWNoaWV2ZWQgdmlhIGEgbW9yZSBkZXRhaWwgaG90cGx1Zwpu b3RpZmljYXRpb24gdGhhdCBhbHNvIG1lbnRpb25zIHdoaWNoIGNvbm5lY3RvciB3YXMgY29uY2Vy bmVkIGJ5IHRoZQpldmVudC4KCj4gTm90ZSB0aGF0IHJlYWxseSB0aGUgb25seSB0aGluZyB0aGUg aHBkIGhhbmRsaW5nIGRvZXNuJ3QgZG8gaXMgZmlsbAo+IGFuZAo+IGZpbHRlciB0aGUgbW9kZSBs aXN0LiBJIGd1ZXNzIGFzIHBhcnQgb2YgdGhpcyB3b3JrIHdlIHNob3VsZCBmaXggdGhhdCwKPiB0 aGF0IHNob3VsZCB0YWtlIGNhcmUgb2YgbW9zdCBvZiB0aGUgbmVlZHMgZm9yIGZ1bGwgcmVwcm9i aW5nLgoKRWl0aGVyIHdheSwgSSBkbyBub3QgaGF2ZSBlbm91Z2ggdGltZSBsZWZ0IGluIG15IGlu dGVybnNoaXAgdG8gc3RhcnQKd29ya2luZyBvbiBzb21ldGhpbmcgYXMgYmlnIGFzIHRoaXMgY2hh bmdlLCBidXQgSSB0aGluayBpdCdzIGEgc3RlcCBpbgp0aGUgcmlnaHQgZGlyZWN0aW9uLgoKLS0g ClBhdWwgS29jaWFsa293c2tpIDxwYXVsLmtvY2lhbGtvd3NraUBsaW51eC5pbnRlbC5jb20+Cklu dGVsIEZpbmxhbmQgT3kgLSBCSUMgMDM1NzYwNi00IC0gV2VzdGVuZGlua2F0dSA3LCAwMjE2MCBF c3BvbywgRmlubGFuZApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751325AbdGZPJw (ORCPT ); Wed, 26 Jul 2017 11:09:52 -0400 Received: from mga07.intel.com ([134.134.136.100]:9562 "EHLO mga07.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750783AbdGZPJu (ORCPT ); Wed, 26 Jul 2017 11:09:50 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.40,415,1496127600"; d="scan'208";a="291712807" Message-ID: <1501081778.13950.4.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: Wed, 26 Jul 2017 18:09:38 +0300 In-Reply-To: <20170725155013.43mtpbpbpq26ywsh@phenom.ffwll.local> References: <20170724145447.23449-1-paul.kocialkowski@linux.intel.com> <20170725065328.fhe75lpunqn7vcqv@phenom.ffwll.local> <1500967544.1277.1.camel@linux.intel.com> <1500969535.1277.3.camel@linux.intel.com> <20170725081652.j43grc7oeyitr4tl@phenom.ffwll.local> <1500985084.1277.7.camel@linux.intel.com> <20170725155013.43mtpbpbpq26ywsh@phenom.ffwll.local> 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 17:50 +0200, Daniel Vetter wrote: > On Tue, Jul 25, 2017 at 03:18:04PM +0300, Paul Kocialkowski wrote: > > On Tue, 2017-07-25 at 10:16 +0200, Daniel Vetter wrote: > > > On Tue, Jul 25, 2017 at 10:58:55AM +0300, Paul Kocialkowski wrote: > > > > 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 > > > > > > > x.in > > > > > > > > tel. > > > > > > > > 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". > > > > > > We can update that spec in a backwards compatible way. E.g. we can > > > ask > > > for > > > the current properties without forcing a reprobe (won't even call > > > down > > > into the driver), and userspace could use that to check which > > > connector > > > has an incremented epoche counter since the last time it sampled > > > things. > > > Then it can reprobe just that one. > > > > > > Old userspace wouldn't know about this, and would keep working as- > > > is. > > > > So the level of detail you're aiming at providing userspace is > > "connector foo changed" then? I agree it is better than the current > > "some connector(s) changed", but what I'd like to see for proper > > testing > > is a way to find out "bar for connector foo changed". > > If you want taht level of detail you need introspection in a in-kernel > selftest I think. We'd need to rather massively change/extend the uapi > to > support that level of testing through the uapi, and thus far no one > else > is asking for it with a real use-case. I'm frankly surprised that no one has complained about this yet! The current level of (lack of) detail about what is happening when a hotplug event is triggered makes testing for various things really hard. But I suppose it makes sense with the "reprobe everything all the time" approach ;) For instance, it wouldn't hurt to add a REASON=foo field to the uevent, in addition to HOTPLUG=1, which would most certainly maintain compatibility with current userspace. I'm not sure that would work out too well if uevents are to be stacked together though. > > > > 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? > > > > > > There's two things: the uapi discussion and the internal > > > implementation, > > > imo their separate (but somewhat connected) topics. > > > > > > - For the internal implementation of detecting edid changes I > > > don't > > > like > > > your approach of rolling a completely new detect path just for > > > resume. > > > I think we can very well integrate that into the existing probe > > > code > > > using the approach I've laid out. > > > > > > - There's more than just edid (e.g. hdcp status, various stuff > > > that's > > > handled in dp aux for DP sinks), and I think a general mechanism > > > for > > > tracking that something changed will be useful for the internal > > > implementation. The other plan would be that we have to wire a > > > bool > > > changed through the entire probe stack, and make sure it's > > > handled > > > correctly everywhere, which is a) a lot more work b) more > > > fragile. > > > Doing > > > a connector->status_epoch++ everywhere we detect a change is > > > _much_ > > > simpler. > > > > So to summarize, the following would happen: an async worker would > > detect whether something changed, then increase the counter for that > > connector and notify userspace, which would trigger full reprobe of > > that > > connector only. Legacy userspace would just trigger full reprobe for > > all > > connectors. > > > > I am still under the impression that you'd like the full reprobe to > > be > > done on the kernel's async worker, to detect that e.g. EDID changed. > > But > > then userspace is going to fully reprobe again, so it will be > > duplicated. Unless the kernel also keeps a reference of the last > > time > > the counter was read from userspace, to determine when to skip full > > reprobe when it is asked from userspace? That feels pretty similar > > to > > having a bool indicating change. > > > > My approach here was to look specifically for the thing that can > > change > > in the async worker (only EDID with this change, but it could be > > extended for the other things you mentioned) as to reduce the > > duplication as much as possible. > > > > > - For the uapi change: We already support returning the cached > > > stuff, > > > the > > > only bit that's missing is the epoch counter to let userspace > > > know > > > where > > > it might need to do a full reprobe. Or maybe we'll just spec > > > that a > > > full > > > reprobe isn't necessary after a hpd event (but that's unlikely > > > to > > > work > > > out given how many bugs we'd need to fix first). > > > > Okay, thanks for the additional explanation. I think I'm getting a > > better grasp on your idea. > > Yeah, the full reprobe isn't needed if you we spec that as the new > fancy > behaviour. We already support getting the cached values through > drmModeGetConnectorCurrent(), without forcing a full reprobe. So then userspace gets the cached values and considers them as "already updated" if the counter has increased, and then stops there and doesn't trigger a full reprobe (which was already done by the kernel's worker)? So all in all, the win here is reprobing only 1 connector instead of reprobing them all. The same could be achieved via a more detail hotplug notification that also mentions which connector was concerned by the event. > Note that really the only thing the hpd handling doesn't do is fill > and > filter the mode list. I guess as part of this work we should fix that, > that should take care of most of the needs for full reprobing. Either way, I do not have enough time left in my internship to start working on something as big as this change, but I think it's a step in the right direction. -- Paul Kocialkowski Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo, Finland