From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Kocialkowski Subject: Re: [PATCH] drm/i915: Synchronize connectors states when switching from poll to irq Date: Thu, 20 Jul 2017 17:41:13 +0300 Message-ID: <1500561673.1362.10.camel@linux.intel.com> References: <20170626123229.27939-1-paul.kocialkowski@linux.intel.com> <1500379902.1351.7.camel@linux.intel.com> <20170720061121.GA9824@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170720061121.GA9824@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Manasi Navare Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCAyMDE3LTA3LTE5IGF0IDIzOjExIC0wNzAwLCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+ IE9uIFR1ZSwgSnVsIDE4LCAyMDE3IGF0IDAzOjExOjQyUE0gKzAzMDAsIFBhdWwgS29jaWFsa293 c2tpIHdyb3RlOgo+ID4gT24gTW9uLCAyMDE3LTA2LTI2IGF0IDE1OjMyICswMzAwLCBQYXVsIEtv Y2lhbGtvd3NraSB3cm90ZToKPiA+ID4gQWZ0ZXIgZGV0ZWN0aW5nIGFuIElSUSBzdG9ybSwgaG90 cGx1ZyBkZXRlY3Rpb24gd2lsbCBzd2l0Y2ggZnJvbQo+ID4gPiBpcnEtYmFzZWQgZGV0ZWN0aW9u IHRvIHBvbGwtYmFzZWQgZGV0ZWN0aW9uLiBBZnRlciBhIHNob3J0IGRlbGF5Cj4gPiA+IG9yCj4g PiA+IHdoZW4gcmVzZXR0aW5nIHN0b3JtIGRldGVjdGlvbiBmcm9tIGRlYnVnZnMsIGRldGVjdGlv biB3aWxsIHN3aXRjaAo+ID4gPiBiYWNrIHRvIGJlaW5nIGlycS1iYXNlZC4KPiA+ID4gCj4gPiA+ IEhvd2V2ZXIsIGl0IG1heSBvY2N1ciB0aGF0IHBvbGxpbmcgZG9lcyBub3QgaGF2ZSBlbm91Z2gg dGltZSB0bwo+ID4gPiBkZXRlY3QKPiA+ID4gdGhlIGN1cnJlbnQgY29ubmVjdG9yIHN0YXRlIHdo ZW4gdGhhdCBzZWNvbmQgc3dpdGNoIHRha2VzIHBsYWNlLgo+ID4gPiBUaHVzLAo+ID4gPiB0aGlz IHNldHMgdGhlIGFwcHJvcHJpYXRlIGhvdHBsdWcgZXZlbnQgYml0cyBmb3IgdGhlIGNvbmNlcm5l ZAo+ID4gPiBjb25uZWN0b3JzIGFuZCBzY2hlZHVsZXMgdGhlIGhvdHBsdWcgd29yaywgdGhhdCB3 aWxsIGVuc3VyZSB0aGUKPiA+ID4gY29ubmVjdG9ycyBzdGF0ZXMgYXJlIGluIHN5bmMgd2hlbiBz d2l0Y2hpbmcgYmFjayB0byBpcnEuCj4gPiA+IAo+ID4gPiBXaXRob3V0IHRoaXMsIG5vIGlycSB3 aWxsIGJlIHRyaWdnZXJlZCBhbmQgdGhlIGhwZCBjaGFuZ2Ugd2lsbCBiZQo+ID4gPiBsb3N0Lgo+ ID4gCj4gPiBEb2VzIGFueW9uZSBoYXZlIGZlZWRiYWNrIHRvIHByb3ZpZGUgb24gdGhpcz8KPiA+ IEl0IGxvb2tzIGxpa2UgaXQgc2hvdWxkIGJlIGEgbm8tYnJhaW5lci4KPiA+IAo+ID4gQ2hlZXJz LAo+ID4gCj4gPiBQYXVsCj4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogUGF1bCBLb2NpYWxrb3dz a2kgPHBhdWwua29jaWFsa293c2tpQGxpbnV4LmludGVsLmNvCj4gPiA+IG0+Cj4gPiA+IC0tLQo+ ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jIHwgOCArKysrKysrLQo+ ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ID4g PiAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hvdHBsdWcu Ywo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hvdHBsdWcuYwo+ID4gPiBpbmRl eCBmMTIwMDI3MmE2OTkuLjI5ZjU1NDgwYjBiYiAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hvdHBsdWcuYwo+ID4gPiBAQCAtMjE4LDkgKzIxOCwxMyBAQCBzdGF0aWMgdm9p ZAo+ID4gPiBpbnRlbF9ocGRfaXJxX3N0b3JtX3JlZW5hYmxlX3dvcmsoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQo+ID4gPiAgCQkJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVj dG9yID0KPiA+ID4gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gPiA+ICAKPiA+ID4g IAkJCWlmIChpbnRlbF9jb25uZWN0b3ItPmVuY29kZXItPmhwZF9waW4gPT0KPiA+ID4gaSkgewo+ IAo+IFNvIGlmIHRoaXMgaHBkIHBpbiBpbiBpbnRlbF9jb25uZWN0b3ItPmVuY29kZXIgaXMgc2V0 IHRoZW4gdGhhdAo+IG1lYW5zIGl0IGdvdCB0aGUgaHBkIGJ1dCBiZWNhdXNlIGNvbm5lY3Rvci0+ cG9sbGVkIGlzICE9Cj4gaW50ZWxfY29ubmVjdG9yLT5wb2xsZWQKPiBwb2xsaW5nIGRpZG50IGRl dGVjdCB0aGF0IGNvbm5lY3Rvci4KPgo+IElzIHRoYXQgd2hhdCB5b3UgYXJlIHRyeWluZyB0byBk byBoZXJlPwoKVGhlIGZpcnN0IHRlc3QgaXMgc2ltcGx5IGEgd2F5IHRvIG1hdGNoIHRoZSBpbnRl bF9jb25uZWN0b3IgdG8gdGhlIGRybQpjb25uZWN0b3IuIFRoZSBzZWNvbmQgb25lIGluZGljYXRl cyB3aGV0aGVyIHdlIGFyZSB1c2luZyBwb2xsaW5nIG9yIGlycQptb2RlLiBJZiB0aGV5IGRvbid0 IG1hdGNoIChnaXZlbiB0aGUgdGVzdCBlYXJsaWVyIGluIHRoZSBjb2RlIHRoYXQgb25seQpzZWxl Y3RzIGhwZCBwaW5zIHRoYXQgdXNlIGlycSBtb2RlKSwgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgc3dp dGNoaW5nIGZyb20KIHBvbGxpbmcgbW9kZSB0byBpcnEgbW9kZS4KCldoZW4gdGhhdCBoYXBwZW5z LCBpdCBpcyBuZWNlc3NhcnkgdG8gYXNzdW1lIHRoYXQgdGhlIGNvbm5lY3RvciBzdGF0ZQptYXkg aGF2ZSBjaGFuZ2VkIChpbiB0aGUgdGltZSB3aW5kb3cgYmV0d2VlbiB0aGUgbGFzdCBwb2xsIGFu ZCBlbmFibGluZwppcnEpLCBzbyB0aGUgaG90cGx1ZyB3b3JrIGlzIHNjaGVkdWxlZC4gSXQgd2ls bCBjaGVjayB3aGV0aGVyIGEgaHBkCnN0YXRlIGNoYW5nZSBkaWQgaGFwcGVuIG9yIG5vdCBhbmQg aXNzdWUgYSB1ZXZlbnQgaWYgdGhhdCBpcyB0aGUgY2FzZS4KCj4gPiA+IC0JCQkJaWYgKGNvbm5l Y3Rvci0+cG9sbGVkICE9Cj4gPiA+IGludGVsX2Nvbm5lY3Rvci0+cG9sbGVkKQo+ID4gPiArCQkJ CWlmIChjb25uZWN0b3ItPnBvbGxlZCAhPQo+ID4gPiBpbnRlbF9jb25uZWN0b3ItPnBvbGxlZCkg ewo+ID4gPiAgCQkJCQlEUk1fREVCVUdfRFJJVkVSKCJSZWVuYWJsCj4gPiA+IGluZwo+ID4gPiBI UEQgb24gY29ubmVjdG9yICVzXG4iLAo+ID4gPiAgCQkJCQkJCSBjb25uZWN0bwo+ID4gPiByLQo+ ID4gPiA+IG5hbWUpOwo+ID4gPiAKPiA+ID4gKwo+ID4gPiArCQkJCQlkZXZfcHJpdi0KPiA+ID4g PmhvdHBsdWcuZXZlbnRfYml0cwo+ID4gPiA+ID0gKDEgPDwgaSk7Cj4gPiA+IAo+ID4gPiArCQkJ CX0KPiA+ID4gKwo+ID4gPiAgCQkJCWNvbm5lY3Rvci0+cG9sbGVkID0KPiA+ID4gaW50ZWxfY29u bmVjdG9yLQo+ID4gPiA+IHBvbGxlZDsKPiA+ID4gCj4gPiA+ICAJCQkJaWYgKCFjb25uZWN0b3It PnBvbGxlZCkKPiA+ID4gIAkJCQkJY29ubmVjdG9yLT5wb2xsZWQgPQo+ID4gPiBEUk1fQ09OTkVD VE9SX1BPTExfSFBEOwo+ID4gPiBAQCAtMjMyLDYgKzIzNiw4IEBAIHN0YXRpYyB2b2lkCj4gPiA+ IGludGVsX2hwZF9pcnFfc3Rvcm1fcmVlbmFibGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCj4gPiA+ICAJCWRldl9wcml2LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXAoZGV2X3ByaXYpOwo+ ID4gPiAgCXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPmlycV9sb2NrKTsKPiA+ID4gIAo+ID4g PiArCXNjaGVkdWxlX3dvcmsoJmRldl9wcml2LT5ob3RwbHVnLmhvdHBsdWdfd29yayk7Cj4gPiA+ ICsKPiA+ID4gIAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gPiA+ICB9Cj4gPiA+ ICAKPiA+IAo+ID4gLS0gCj4gPiBQYXVsIEtvY2lhbGtvd3NraSA8cGF1bC5rb2NpYWxrb3dza2lA bGludXguaW50ZWwuY29tPgo+ID4gSW50ZWwgRmlubGFuZCBPeSAtIEJJQyAwMzU3NjA2LTQgLSBX ZXN0ZW5kaW5rYXR1IDcsIDAyMTYwIEVzcG9vLAo+ID4gRmlubGFuZAo+ID4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IGRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKPiA+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCi0tIApQYXVsIEtv Y2lhbGtvd3NraSA8cGF1bC5rb2NpYWxrb3dza2lAbGludXguaW50ZWwuY29tPgpJbnRlbCBGaW5s YW5kIE95IC0gQklDIDAzNTc2MDYtNCAtIFdlc3RlbmRpbmthdHUgNywgMDIxNjAgRXNwb28sIEZp bmxhbmQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934897AbdGTOlZ (ORCPT ); Thu, 20 Jul 2017 10:41:25 -0400 Received: from mga14.intel.com ([192.55.52.115]:60397 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752822AbdGTOlY (ORCPT ); Thu, 20 Jul 2017 10:41:24 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.40,384,1496127600"; d="scan'208";a="880890376" Message-ID: <1500561673.1362.10.camel@linux.intel.com> Subject: Re: [PATCH] drm/i915: Synchronize connectors states when switching from poll to irq From: Paul Kocialkowski To: Manasi Navare Cc: intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Daniel Vetter Date: Thu, 20 Jul 2017 17:41:13 +0300 In-Reply-To: <20170720061121.GA9824@intel.com> References: <20170626123229.27939-1-paul.kocialkowski@linux.intel.com> <1500379902.1351.7.camel@linux.intel.com> <20170720061121.GA9824@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 Wed, 2017-07-19 at 23:11 -0700, Manasi Navare wrote: > On Tue, Jul 18, 2017 at 03:11:42PM +0300, Paul Kocialkowski wrote: > > On Mon, 2017-06-26 at 15:32 +0300, Paul Kocialkowski wrote: > > > After detecting an IRQ storm, hotplug detection will switch from > > > irq-based detection to poll-based detection. After a short delay > > > or > > > when resetting storm detection from debugfs, detection will switch > > > back to being irq-based. > > > > > > However, it may occur that polling does not have enough time to > > > detect > > > the current connector state when that second switch takes place. > > > Thus, > > > this sets the appropriate hotplug event bits for the concerned > > > connectors and schedules the hotplug work, that will ensure the > > > connectors states are in sync when switching back to irq. > > > > > > Without this, no irq will be triggered and the hpd change will be > > > lost. > > > > Does anyone have feedback to provide on this? > > It looks like it should be a no-brainer. > > > > Cheers, > > > > Paul > > > > > Signed-off-by: Paul Kocialkowski > > m> > > > --- > > > drivers/gpu/drm/i915/intel_hotplug.c | 8 +++++++- > > > 1 file changed, 7 insertions(+), 1 deletion(-) > > > > > > diff --git a/drivers/gpu/drm/i915/intel_hotplug.c > > > b/drivers/gpu/drm/i915/intel_hotplug.c > > > index f1200272a699..29f55480b0bb 100644 > > > --- a/drivers/gpu/drm/i915/intel_hotplug.c > > > +++ b/drivers/gpu/drm/i915/intel_hotplug.c > > > @@ -218,9 +218,13 @@ static void > > > intel_hpd_irq_storm_reenable_work(struct work_struct *work) > > > struct intel_connector *intel_connector = > > > to_intel_connector(connector); > > > > > > if (intel_connector->encoder->hpd_pin == > > > i) { > > So if this hpd pin in intel_connector->encoder is set then that > means it got the hpd but because connector->polled is != > intel_connector->polled > polling didnt detect that connector. > > Is that what you are trying to do here? The first test is simply a way to match the intel_connector to the drm connector. The second one indicates whether we are using polling or irq mode. If they don't match (given the test earlier in the code that only selects hpd pins that use irq mode), it means that we are switching from polling mode to irq mode. When that happens, it is necessary to assume that the connector state may have changed (in the time window between the last poll and enabling irq), so the hotplug work is scheduled. It will check whether a hpd state change did happen or not and issue a uevent if that is the case. > > > - if (connector->polled != > > > intel_connector->polled) > > > + if (connector->polled != > > > intel_connector->polled) { > > > DRM_DEBUG_DRIVER("Reenabl > > > ing > > > HPD on connector %s\n", > > > connecto > > > r- > > > > name); > > > > > > + > > > + dev_priv- > > > >hotplug.event_bits > > > > = (1 << i); > > > > > > + } > > > + > > > connector->polled = > > > intel_connector- > > > > polled; > > > > > > if (!connector->polled) > > > connector->polled = > > > DRM_CONNECTOR_POLL_HPD; > > > @@ -232,6 +236,8 @@ static void > > > intel_hpd_irq_storm_reenable_work(struct work_struct *work) > > > dev_priv->display.hpd_irq_setup(dev_priv); > > > spin_unlock_irq(&dev_priv->irq_lock); > > > > > > + schedule_work(&dev_priv->hotplug.hotplug_work); > > > + > > > intel_runtime_pm_put(dev_priv); > > > } > > > > > > > -- > > Paul Kocialkowski > > Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo, > > Finland > > _______________________________________________ > > 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