Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v4)
On Fri, 4 Jan 2019 12:02:34 +0800 Chris Chiu wrote: > On Thu, Jan 3, 2019 at 1:50 AM Guang Bai wrote: > > > > On Wed, 2 Jan 2019 17:29:46 +0800 > > Chris Chiu wrote: > > > > > Happy New Year. > > > Sorry for bothering you guys again, I don't really want to make > > > myself a nuisance. > > > Is there any better idea for fixing this issue? > > I've already back ported this change into the kernel 4.18.17 and > > sent it to our customer for integration test - So far so good. > > Thanks, > > -Guang > > Thanks, Guang. > Can I expect to see it in next kernel release? Or we need to wait > until more positive results coming? - I'm not sure if and when my changes will pass the review and merged into the upstream kernel. I'm stuck on re-testing my fix with all those claimed failures from HDMI port live status checking happened sometimes before. I don't have any background info on those failures simply because I stepped into DRM/i915 area in recent one or two years after working on other OS/platform's gfx driver for more than two decades - My customer can't wait for this long, endless review time-period and just go ahead on proactive integration testing. They'll update us the results in a couple of days Thanks, -Guang > > > > > > > Chris > > > > > > On Mon, Dec 3, 2018 at 6:38 PM Chris Chiu > > > wrote: > > > > > > > > On Fri, Nov 30, 2018 at 1:15 AM Guang Bai > > > > wrote: > > > > > > > > > > On Thu, 29 Nov 2018 10:17:49 +0200 > > > > > Jani Nikula wrote: > > > > > > > > > > > On Wed, 28 Nov 2018, Guang Bai > > > > > > wrote: > > > > > > > On some GEN9 platforms, slowly unplugging (wiggling) the > > > > > > > HDMI cable makes the kernel to believe the HDMI display > > > > > > > is still connected. This is because the HDMI DDC lines are > > > > > > > disconnected a little bit later after the hot-plug > > > > > > > interrupt triggered thus an immediate edid fetch can be > > > > > > > made. This problem has been identified by more than one > > > > > > > customer recently. Use digital port live states to > > > > > > > authorize the edid read at HDMI detection point will > > > > > > > ensure most of the display related software states > > > > > > > updated and rest of them will be renewed accordingly when > > > > > > > the port is connected. > > > > > > > > > > > > > > v2: Fix the formatting issue > > > > > > > v3: Use digital port states to authorize the edid read > > > > > > > v4: Add comments on issue histories and rationale of the > > > > > > > fix (Chris W) > > > > > > > > > > > > You're not answering Chris Wilson's question. > > > > > > > > > > > > Why do you think the problems we've historically had with > > > > > > live status are no longer a problem? We've tried and > > > > > > reverted live status checks at least twice before because > > > > > > of regressions. Why do you think this time there won't be > > > > > > regressions? Why do you think this patch makes forward > > > > > > progress? > > > > > Jani, > > > > > I'm still new to kernel developments compared with all of you > > > > > working in this area for many years - Haven't got any > > > > > feedbacks on how exactly the HDMI live statue *not* fit for > > > > > HDMI hot-plug related port status checking, neither had time > > > > > to track all upstream bugzilla, plus not working directly > > > > > with Intel OTC teams > > > > > - What are those failing cases/regressions you mentioned > > > > > above? > > > > > - what were the kernel versions related with those > > > > > developments? > > > > > - Given the fact i915 architecture and implementation are > > > > > constantly evolving - Should we re-visit those issues with > > > > > current kernel implementation? > > > > > - Fundamentally, do you think the edid fetch is still *valid* > > > > > when the HDMI is unplugged (status either from PCH or DE)? Or > > > > > other platform configurations may present more complexities > > > > > such as kvm switches are used along with HDMI? > > > > > Again, if you could provide me more historical issue details, > > > > > I'd like to have some reviews/re-investigation for those > > > > > cases with current 4.20 kernel. > > > > > Thanks, > > > > > -Guang > > > > > > > > Hi Jani, > > > > I don't know the history and what kind of painful regression > > > > that you had run into. Could you maybe provide a test plan or > > > > some test cases for the regression verification? I can follow > > > > steps to try to verify whether if the patch can work on all > > > > cases. > > > > > > > > Chris > > > > > > > > > > > > > > > > I've *repeatedly* said from the beginning that I am very > > > > > > sceptical of using live status because we've been burned by > > > > > > it so many times before. I don't much care to repeat this > > > > > > anymore. > > > > > > > > > > > > > > > > > > BR, > > > > > > Jani. > > > > > > > > > > > > > > > > > > > > > > > > > > Cc: Jani Nikula > > > > > > > Cc: Chris Chiu > > > > > > > Cc: Chris Wilson
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v4)
On Thu, Jan 3, 2019 at 1:50 AM Guang Bai wrote: > > On Wed, 2 Jan 2019 17:29:46 +0800 > Chris Chiu wrote: > > > Happy New Year. > > Sorry for bothering you guys again, I don't really want to make myself > > a nuisance. > > Is there any better idea for fixing this issue? > I've already back ported this change into the kernel 4.18.17 and sent > it to our customer for integration test - So far so good. > Thanks, > -Guang Thanks, Guang. Can I expect to see it in next kernel release? Or we need to wait until more positive results coming? > > > > Chris > > > > On Mon, Dec 3, 2018 at 6:38 PM Chris Chiu wrote: > > > > > > On Fri, Nov 30, 2018 at 1:15 AM Guang Bai > > > wrote: > > > > > > > > On Thu, 29 Nov 2018 10:17:49 +0200 > > > > Jani Nikula wrote: > > > > > > > > > On Wed, 28 Nov 2018, Guang Bai wrote: > > > > > > On some GEN9 platforms, slowly unplugging (wiggling) the HDMI > > > > > > cable makes the kernel to believe the HDMI display is still > > > > > > connected. This is because the HDMI DDC lines are > > > > > > disconnected a little bit later after the hot-plug interrupt > > > > > > triggered thus an immediate edid fetch can be made. This > > > > > > problem has been identified by more than one customer > > > > > > recently. Use digital port live states to authorize the edid > > > > > > read at HDMI detection point will ensure most of the display > > > > > > related software states updated and rest of them will be > > > > > > renewed accordingly when the port is connected. > > > > > > > > > > > > v2: Fix the formatting issue > > > > > > v3: Use digital port states to authorize the edid read > > > > > > v4: Add comments on issue histories and rationale of the fix > > > > > > (Chris W) > > > > > > > > > > You're not answering Chris Wilson's question. > > > > > > > > > > Why do you think the problems we've historically had with live > > > > > status are no longer a problem? We've tried and reverted live > > > > > status checks at least twice before because of regressions. Why > > > > > do you think this time there won't be regressions? Why do you > > > > > think this patch makes forward progress? > > > > Jani, > > > > I'm still new to kernel developments compared with all of you > > > > working in this area for many years - Haven't got any feedbacks > > > > on how exactly the HDMI live statue *not* fit for HDMI hot-plug > > > > related port status checking, neither had time to track all > > > > upstream bugzilla, plus not working directly with Intel OTC teams > > > > - What are those failing cases/regressions you mentioned above? > > > > - what were the kernel versions related with those developments? > > > > - Given the fact i915 architecture and implementation are > > > > constantly evolving - Should we re-visit those issues with > > > > current kernel implementation? > > > > - Fundamentally, do you think the edid fetch is still *valid* > > > > when the HDMI is unplugged (status either from PCH or DE)? Or > > > > other platform configurations may present more complexities such > > > > as kvm switches are used along with HDMI? > > > > Again, if you could provide me more historical issue details, I'd > > > > like to have some reviews/re-investigation for those cases with > > > > current 4.20 kernel. > > > > Thanks, > > > > -Guang > > > > > > Hi Jani, > > > I don't know the history and what kind of painful regression > > > that you had run into. Could you maybe provide a test plan or some > > > test cases for the regression verification? I can follow steps to > > > try to verify whether if the patch can work on all cases. > > > > > > Chris > > > > > > > > > > > > > I've *repeatedly* said from the beginning that I am very > > > > > sceptical of using live status because we've been burned by it > > > > > so many times before. I don't much care to repeat this anymore. > > > > > > > > > > > > > > > BR, > > > > > Jani. > > > > > > > > > > > > > > > > > > > > > > Cc: Jani Nikula > > > > > > Cc: Chris Chiu > > > > > > Cc: Chris Wilson > > > > > > Signed-off-by: Guang Bai > > > > > > --- > > > > > > drivers/gpu/drm/i915/intel_hdmi.c | 2 +- > > > > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > > > > > > > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c > > > > > > b/drivers/gpu/drm/i915/intel_hdmi.c index e2c6a2b..8cf7c78 > > > > > > 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c > > > > > > +++ b/drivers/gpu/drm/i915/intel_hdmi.c > > > > > > @@ -1929,7 +1929,7 @@ intel_hdmi_detect(struct drm_connector > > > > > > *connector, bool force) > > > > > > intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS); > > > > > > > > > > > > - if (IS_ICELAKE(dev_priv) && > > > > > > + if ((IS_ICELAKE(dev_priv) || IS_GEN9_BC(dev_priv)) && > > > > > > !intel_digital_port_connected(encoder)) > > > > > > goto out; > > > > > > > > > > ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/l
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v4)
On Wed, 2 Jan 2019 17:29:46 +0800 Chris Chiu wrote: > Happy New Year. > Sorry for bothering you guys again, I don't really want to make myself > a nuisance. > Is there any better idea for fixing this issue? I've already back ported this change into the kernel 4.18.17 and sent it to our customer for integration test - So far so good. Thanks, -Guang > > Chris > > On Mon, Dec 3, 2018 at 6:38 PM Chris Chiu wrote: > > > > On Fri, Nov 30, 2018 at 1:15 AM Guang Bai > > wrote: > > > > > > On Thu, 29 Nov 2018 10:17:49 +0200 > > > Jani Nikula wrote: > > > > > > > On Wed, 28 Nov 2018, Guang Bai wrote: > > > > > On some GEN9 platforms, slowly unplugging (wiggling) the HDMI > > > > > cable makes the kernel to believe the HDMI display is still > > > > > connected. This is because the HDMI DDC lines are > > > > > disconnected a little bit later after the hot-plug interrupt > > > > > triggered thus an immediate edid fetch can be made. This > > > > > problem has been identified by more than one customer > > > > > recently. Use digital port live states to authorize the edid > > > > > read at HDMI detection point will ensure most of the display > > > > > related software states updated and rest of them will be > > > > > renewed accordingly when the port is connected. > > > > > > > > > > v2: Fix the formatting issue > > > > > v3: Use digital port states to authorize the edid read > > > > > v4: Add comments on issue histories and rationale of the fix > > > > > (Chris W) > > > > > > > > You're not answering Chris Wilson's question. > > > > > > > > Why do you think the problems we've historically had with live > > > > status are no longer a problem? We've tried and reverted live > > > > status checks at least twice before because of regressions. Why > > > > do you think this time there won't be regressions? Why do you > > > > think this patch makes forward progress? > > > Jani, > > > I'm still new to kernel developments compared with all of you > > > working in this area for many years - Haven't got any feedbacks > > > on how exactly the HDMI live statue *not* fit for HDMI hot-plug > > > related port status checking, neither had time to track all > > > upstream bugzilla, plus not working directly with Intel OTC teams > > > - What are those failing cases/regressions you mentioned above? > > > - what were the kernel versions related with those developments? > > > - Given the fact i915 architecture and implementation are > > > constantly evolving - Should we re-visit those issues with > > > current kernel implementation? > > > - Fundamentally, do you think the edid fetch is still *valid* > > > when the HDMI is unplugged (status either from PCH or DE)? Or > > > other platform configurations may present more complexities such > > > as kvm switches are used along with HDMI? > > > Again, if you could provide me more historical issue details, I'd > > > like to have some reviews/re-investigation for those cases with > > > current 4.20 kernel. > > > Thanks, > > > -Guang > > > > Hi Jani, > > I don't know the history and what kind of painful regression > > that you had run into. Could you maybe provide a test plan or some > > test cases for the regression verification? I can follow steps to > > try to verify whether if the patch can work on all cases. > > > > Chris > > > > > > > > > > I've *repeatedly* said from the beginning that I am very > > > > sceptical of using live status because we've been burned by it > > > > so many times before. I don't much care to repeat this anymore. > > > > > > > > > > > > BR, > > > > Jani. > > > > > > > > > > > > > > > > > > Cc: Jani Nikula > > > > > Cc: Chris Chiu > > > > > Cc: Chris Wilson > > > > > Signed-off-by: Guang Bai > > > > > --- > > > > > drivers/gpu/drm/i915/intel_hdmi.c | 2 +- > > > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > > > > > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c > > > > > b/drivers/gpu/drm/i915/intel_hdmi.c index e2c6a2b..8cf7c78 > > > > > 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c > > > > > +++ b/drivers/gpu/drm/i915/intel_hdmi.c > > > > > @@ -1929,7 +1929,7 @@ intel_hdmi_detect(struct drm_connector > > > > > *connector, bool force) > > > > > intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS); > > > > > > > > > > - if (IS_ICELAKE(dev_priv) && > > > > > + if ((IS_ICELAKE(dev_priv) || IS_GEN9_BC(dev_priv)) && > > > > > !intel_digital_port_connected(encoder)) > > > > > goto out; > > > > > > > ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v4)
Happy New Year. Sorry for bothering you guys again, I don't really want to make myself a nuisance. Is there any better idea for fixing this issue? Chris On Mon, Dec 3, 2018 at 6:38 PM Chris Chiu wrote: > > On Fri, Nov 30, 2018 at 1:15 AM Guang Bai wrote: > > > > On Thu, 29 Nov 2018 10:17:49 +0200 > > Jani Nikula wrote: > > > > > On Wed, 28 Nov 2018, Guang Bai wrote: > > > > On some GEN9 platforms, slowly unplugging (wiggling) the HDMI cable > > > > makes the kernel to believe the HDMI display is still connected. > > > > This is because the HDMI DDC lines are disconnected a little bit > > > > later after the hot-plug interrupt triggered thus an immediate edid > > > > fetch can be made. This problem has been identified by more than > > > > one customer recently. Use digital port live states to authorize > > > > the edid read at HDMI detection point will ensure most of the > > > > display related software states updated and rest of them will be > > > > renewed accordingly when the port is connected. > > > > > > > > v2: Fix the formatting issue > > > > v3: Use digital port states to authorize the edid read > > > > v4: Add comments on issue histories and rationale of the fix (Chris > > > > W) > > > > > > You're not answering Chris Wilson's question. > > > > > > Why do you think the problems we've historically had with live status > > > are no longer a problem? We've tried and reverted live status checks > > > at least twice before because of regressions. Why do you think this > > > time there won't be regressions? Why do you think this patch makes > > > forward progress? > > Jani, > > I'm still new to kernel developments compared with all of you working > > in this area for many years - Haven't got any feedbacks on how > > exactly the HDMI live statue *not* fit for HDMI hot-plug related port > > status checking, neither had time to track all upstream bugzilla, plus > > not working directly with Intel OTC teams > > - What are those failing cases/regressions you mentioned above? > > - what were the kernel versions related with those developments? > > - Given the fact i915 architecture and implementation are constantly > > evolving - Should we re-visit those issues with current kernel > > implementation? > > - Fundamentally, do you think the edid fetch is still *valid* when the > > HDMI is unplugged (status either from PCH or DE)? Or other platform > > configurations may present more complexities such as kvm switches are > > used along with HDMI? > > Again, if you could provide me more historical issue details, I'd like > > to have some reviews/re-investigation for those cases with current 4.20 > > kernel. > > Thanks, > > -Guang > > Hi Jani, > I don't know the history and what kind of painful regression that you > had run into. Could you maybe provide a test plan or some test cases > for the regression verification? I can follow steps to try to verify whether > if the patch can work on all cases. > > Chris > > > > > > > I've *repeatedly* said from the beginning that I am very sceptical of > > > using live status because we've been burned by it so many times > > > before. I don't much care to repeat this anymore. > > > > > > > > > BR, > > > Jani. > > > > > > > > > > > > > > Cc: Jani Nikula > > > > Cc: Chris Chiu > > > > Cc: Chris Wilson > > > > Signed-off-by: Guang Bai > > > > --- > > > > drivers/gpu/drm/i915/intel_hdmi.c | 2 +- > > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > > > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c > > > > b/drivers/gpu/drm/i915/intel_hdmi.c index e2c6a2b..8cf7c78 100644 > > > > --- a/drivers/gpu/drm/i915/intel_hdmi.c > > > > +++ b/drivers/gpu/drm/i915/intel_hdmi.c > > > > @@ -1929,7 +1929,7 @@ intel_hdmi_detect(struct drm_connector > > > > *connector, bool force) > > > > intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS); > > > > > > > > - if (IS_ICELAKE(dev_priv) && > > > > + if ((IS_ICELAKE(dev_priv) || IS_GEN9_BC(dev_priv)) && > > > > !intel_digital_port_connected(encoder)) > > > > goto out; > > > > > ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v4)
On Fri, Nov 30, 2018 at 1:15 AM Guang Bai wrote: > > On Thu, 29 Nov 2018 10:17:49 +0200 > Jani Nikula wrote: > > > On Wed, 28 Nov 2018, Guang Bai wrote: > > > On some GEN9 platforms, slowly unplugging (wiggling) the HDMI cable > > > makes the kernel to believe the HDMI display is still connected. > > > This is because the HDMI DDC lines are disconnected a little bit > > > later after the hot-plug interrupt triggered thus an immediate edid > > > fetch can be made. This problem has been identified by more than > > > one customer recently. Use digital port live states to authorize > > > the edid read at HDMI detection point will ensure most of the > > > display related software states updated and rest of them will be > > > renewed accordingly when the port is connected. > > > > > > v2: Fix the formatting issue > > > v3: Use digital port states to authorize the edid read > > > v4: Add comments on issue histories and rationale of the fix (Chris > > > W) > > > > You're not answering Chris Wilson's question. > > > > Why do you think the problems we've historically had with live status > > are no longer a problem? We've tried and reverted live status checks > > at least twice before because of regressions. Why do you think this > > time there won't be regressions? Why do you think this patch makes > > forward progress? > Jani, > I'm still new to kernel developments compared with all of you working > in this area for many years - Haven't got any feedbacks on how > exactly the HDMI live statue *not* fit for HDMI hot-plug related port > status checking, neither had time to track all upstream bugzilla, plus > not working directly with Intel OTC teams > - What are those failing cases/regressions you mentioned above? > - what were the kernel versions related with those developments? > - Given the fact i915 architecture and implementation are constantly > evolving - Should we re-visit those issues with current kernel > implementation? > - Fundamentally, do you think the edid fetch is still *valid* when the > HDMI is unplugged (status either from PCH or DE)? Or other platform > configurations may present more complexities such as kvm switches are > used along with HDMI? > Again, if you could provide me more historical issue details, I'd like > to have some reviews/re-investigation for those cases with current 4.20 > kernel. > Thanks, > -Guang Hi Jani, I don't know the history and what kind of painful regression that you had run into. Could you maybe provide a test plan or some test cases for the regression verification? I can follow steps to try to verify whether if the patch can work on all cases. Chris > > > > I've *repeatedly* said from the beginning that I am very sceptical of > > using live status because we've been burned by it so many times > > before. I don't much care to repeat this anymore. > > > > > > BR, > > Jani. > > > > > > > > > > Cc: Jani Nikula > > > Cc: Chris Chiu > > > Cc: Chris Wilson > > > Signed-off-by: Guang Bai > > > --- > > > drivers/gpu/drm/i915/intel_hdmi.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c > > > b/drivers/gpu/drm/i915/intel_hdmi.c index e2c6a2b..8cf7c78 100644 > > > --- a/drivers/gpu/drm/i915/intel_hdmi.c > > > +++ b/drivers/gpu/drm/i915/intel_hdmi.c > > > @@ -1929,7 +1929,7 @@ intel_hdmi_detect(struct drm_connector > > > *connector, bool force) > > > intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS); > > > > > > - if (IS_ICELAKE(dev_priv) && > > > + if ((IS_ICELAKE(dev_priv) || IS_GEN9_BC(dev_priv)) && > > > !intel_digital_port_connected(encoder)) > > > goto out; > > > ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v4)
On Thu, 29 Nov 2018 10:17:49 +0200 Jani Nikula wrote: > On Wed, 28 Nov 2018, Guang Bai wrote: > > On some GEN9 platforms, slowly unplugging (wiggling) the HDMI cable > > makes the kernel to believe the HDMI display is still connected. > > This is because the HDMI DDC lines are disconnected a little bit > > later after the hot-plug interrupt triggered thus an immediate edid > > fetch can be made. This problem has been identified by more than > > one customer recently. Use digital port live states to authorize > > the edid read at HDMI detection point will ensure most of the > > display related software states updated and rest of them will be > > renewed accordingly when the port is connected. > > > > v2: Fix the formatting issue > > v3: Use digital port states to authorize the edid read > > v4: Add comments on issue histories and rationale of the fix (Chris > > W) > > You're not answering Chris Wilson's question. > > Why do you think the problems we've historically had with live status > are no longer a problem? We've tried and reverted live status checks > at least twice before because of regressions. Why do you think this > time there won't be regressions? Why do you think this patch makes > forward progress? Jani, I'm still new to kernel developments compared with all of you working in this area for many years - Haven't got any feedbacks on how exactly the HDMI live statue *not* fit for HDMI hot-plug related port status checking, neither had time to track all upstream bugzilla, plus not working directly with Intel OTC teams - What are those failing cases/regressions you mentioned above? - what were the kernel versions related with those developments? - Given the fact i915 architecture and implementation are constantly evolving - Should we re-visit those issues with current kernel implementation? - Fundamentally, do you think the edid fetch is still *valid* when the HDMI is unplugged (status either from PCH or DE)? Or other platform configurations may present more complexities such as kvm switches are used along with HDMI? Again, if you could provide me more historical issue details, I'd like to have some reviews/re-investigation for those cases with current 4.20 kernel. Thanks, -Guang > > I've *repeatedly* said from the beginning that I am very sceptical of > using live status because we've been burned by it so many times > before. I don't much care to repeat this anymore. > > > BR, > Jani. > > > > > > Cc: Jani Nikula > > Cc: Chris Chiu > > Cc: Chris Wilson > > Signed-off-by: Guang Bai > > --- > > drivers/gpu/drm/i915/intel_hdmi.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c > > b/drivers/gpu/drm/i915/intel_hdmi.c index e2c6a2b..8cf7c78 100644 > > --- a/drivers/gpu/drm/i915/intel_hdmi.c > > +++ b/drivers/gpu/drm/i915/intel_hdmi.c > > @@ -1929,7 +1929,7 @@ intel_hdmi_detect(struct drm_connector > > *connector, bool force) > > intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS); > > > > - if (IS_ICELAKE(dev_priv) && > > + if ((IS_ICELAKE(dev_priv) || IS_GEN9_BC(dev_priv)) && > > !intel_digital_port_connected(encoder)) > > goto out; > ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v4)
On Thu, Nov 29, 2018 at 9:52 AM Guang Bai wrote: > On some GEN9 platforms, slowly unplugging (wiggling) the HDMI cable makes > the kernel to believe the HDMI display is still connected. This is because > the HDMI DDC lines are disconnected a little bit later after the hot-plug > interrupt triggered thus an immediate edid fetch can be made. This problem > has been identified by more than one customer recently. Use digital > port live states to authorize the edid read at HDMI detection point will > ensure most of the display related software states updated and rest of them > will be renewed accordingly when the port is connected. > > v2: Fix the formatting issue > v3: Use digital port states to authorize the edid read > v4: Add comments on issue histories and rationale of the fix (Chris W) > > Cc: Jani Nikula > Cc: Chris Chiu > Cc: Chris Wilson > Signed-off-by: Guang Bai > --- > drivers/gpu/drm/i915/intel_hdmi.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c > b/drivers/gpu/drm/i915/intel_hdmi.c > index e2c6a2b..8cf7c78 100644 > --- a/drivers/gpu/drm/i915/intel_hdmi.c > +++ b/drivers/gpu/drm/i915/intel_hdmi.c > @@ -1929,7 +1929,7 @@ intel_hdmi_detect(struct drm_connector *connector, > bool force) > > intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS); > > - if (IS_ICELAKE(dev_priv) && > + if ((IS_ICELAKE(dev_priv) || IS_GEN9_BC(dev_priv)) && > !intel_digital_port_connected(encoder)) > goto out; > > -- > 2.7.4 > > I've tried on my problematic ASUS X705FD, seems no problem on my test scenarios (100% pass). I can reproduce with very slow unplug on previous versions but can't reproduce anymore on this one. I tried slow unplgug with few finds of HDMI jack I have in hand, it responds as expected. Don't know if there's any tough test case I should try, but I think it pretty much solve the problem. Thanks. Chris ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v4)
On Wed, 28 Nov 2018, Guang Bai wrote: > On some GEN9 platforms, slowly unplugging (wiggling) the HDMI cable makes > the kernel to believe the HDMI display is still connected. This is because > the HDMI DDC lines are disconnected a little bit later after the hot-plug > interrupt triggered thus an immediate edid fetch can be made. This problem > has been identified by more than one customer recently. Use digital > port live states to authorize the edid read at HDMI detection point will > ensure most of the display related software states updated and rest of them > will be renewed accordingly when the port is connected. > > v2: Fix the formatting issue > v3: Use digital port states to authorize the edid read > v4: Add comments on issue histories and rationale of the fix (Chris W) You're not answering Chris Wilson's question. Why do you think the problems we've historically had with live status are no longer a problem? We've tried and reverted live status checks at least twice before because of regressions. Why do you think this time there won't be regressions? Why do you think this patch makes forward progress? I've *repeatedly* said from the beginning that I am very sceptical of using live status because we've been burned by it so many times before. I don't much care to repeat this anymore. BR, Jani. > > Cc: Jani Nikula > Cc: Chris Chiu > Cc: Chris Wilson > Signed-off-by: Guang Bai > --- > drivers/gpu/drm/i915/intel_hdmi.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c > b/drivers/gpu/drm/i915/intel_hdmi.c > index e2c6a2b..8cf7c78 100644 > --- a/drivers/gpu/drm/i915/intel_hdmi.c > +++ b/drivers/gpu/drm/i915/intel_hdmi.c > @@ -1929,7 +1929,7 @@ intel_hdmi_detect(struct drm_connector *connector, bool > force) > > intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS); > > - if (IS_ICELAKE(dev_priv) && > + if ((IS_ICELAKE(dev_priv) || IS_GEN9_BC(dev_priv)) && > !intel_digital_port_connected(encoder)) > goto out; -- Jani Nikula, Intel Open Source Graphics Center ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v4)
On some GEN9 platforms, slowly unplugging (wiggling) the HDMI cable makes the kernel to believe the HDMI display is still connected. This is because the HDMI DDC lines are disconnected a little bit later after the hot-plug interrupt triggered thus an immediate edid fetch can be made. This problem has been identified by more than one customer recently. Use digital port live states to authorize the edid read at HDMI detection point will ensure most of the display related software states updated and rest of them will be renewed accordingly when the port is connected. v2: Fix the formatting issue v3: Use digital port states to authorize the edid read v4: Add comments on issue histories and rationale of the fix (Chris W) Cc: Jani Nikula Cc: Chris Chiu Cc: Chris Wilson Signed-off-by: Guang Bai --- drivers/gpu/drm/i915/intel_hdmi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c index e2c6a2b..8cf7c78 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c @@ -1929,7 +1929,7 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS); - if (IS_ICELAKE(dev_priv) && + if ((IS_ICELAKE(dev_priv) || IS_GEN9_BC(dev_priv)) && !intel_digital_port_connected(encoder)) goto out; -- 2.7.4 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v2)
On Tue, 13 Nov 2018 13:07:46 +0200 Jani Nikula wrote: > On Mon, 12 Nov 2018, Guang Bai wrote: > > Actually I'm still working on it right now with > > DRM_MODE_CONNECTOR_HDMIA/HDMIB, recommended by James, I'm able to > > differentiate the HDMI or DP even the encoder type is the > > "INTEL_OUTPUT_DDI", I still have the "trybot" intermittent test > > failures with new DRM connector types. Even worse, there is phantom > > "intel_encoder_hotplug()" call following the correct one: > > When connecting both DP and HDMI on the platform, unplug the DP, the > > "i915_hotplug_work_func()" first calls the "intel_encoder_hotplug()" > > with DP encoder, then calls again with HDMI encoder. > > I haven't identified if the work function get queued twice or itself > > is incorrectly identifying wrong encoder hotplut status. Will try to > > get everything cleaned up ASAP. > > Frankly I liked the simplicity of [1] over the patch in this thread. > It fixed the real-world use case Chris Chiu has, but I understand > that it still failed the slow unplug HDMI test case you have. The > problem is, we have zero visibility to the test case you have. Is it > automated or manual? Can we see the specs or source code for the test > case? > > If we have to consider the live status unreliable, it's possible to > devise a pathological test case that will always fail, regardless of > what we do in the driver. Does the test case reflect real world usage? > > Also Cc: Ville for input. > > BR, > Jani. > Hi Jani, Ville & Chris (Chiu): Sorry for the late reply as I have beening bumping around different projects and also spent sometime to investigate [v2] failures with testing the codes on trybot 1. My testcase: I have one+ customer KBL laptop and uBuntu16.04 running, slowly unplug the HDMI cable (wiggling), the issue can be reproduced very easily - Just check kernel HDMI-A-1 connecting states 2. I belive Chris is using roughly the same test case? 3. I don't like the [v2] solution either since it's *not* clean and have intermittent trybot/patchwork failures 4. with latest drm-tip codes, I'm able to workout a very clean solution [v3] today and it passes the patchwork tests - Would you like to try it out and also review the change? Thanks, Guang > > > [1] > http://patchwork.freedesktop.org/patch/msgid/20180925071836.24711-1-jani.nik...@intel.com > > ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v3)
Quoting Guang Bai (2018-11-28 21:18:13) > On some GEN9 platforms, slowly unplugging (wiggling) the HDMI cable makes > the kernel to believe the HDMI display is still connected. This is because > the HDMI DDC lines are disconnected a little bit later after the hot-plug > interrupt triggered thus an immediate edid fetch can be made. Use digital > port live states to authorize the edid read. You should at least comment upon why we don't historically do this and why you now believe that it is safe. -Chris ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v3)
On some GEN9 platforms, slowly unplugging (wiggling) the HDMI cable makes the kernel to believe the HDMI display is still connected. This is because the HDMI DDC lines are disconnected a little bit later after the hot-plug interrupt triggered thus an immediate edid fetch can be made. Use digital port live states to authorize the edid read. v2: Fix the formatting issue v3: Use digital port states to authorize the edid read Cc: Jani Nikula Cc: Chris Chiu Signed-off-by: Guang Bai --- drivers/gpu/drm/i915/intel_hdmi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c index e2c6a2b3e8f2..8cf7c78b8cdd 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c @@ -1929,7 +1929,7 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS); - if (IS_ICELAKE(dev_priv) && + if ((IS_ICELAKE(dev_priv) || IS_GEN9_BC(dev_priv)) && !intel_digital_port_connected(encoder)) goto out; -- 2.17.1 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v2)
On Tue, Nov 13, 2018 at 1:18 PM Guang Bai wrote: > On Tue, 13 Nov 2018 09:04:37 +0800 > Chris Chiu wrote: > > > Gentle ping. Just want to know if you have time for this so far. > > Thanks > > > > Chris > Actually I'm still working on it right now with > DRM_MODE_CONNECTOR_HDMIA/HDMIB, recommended by James, I'm able to > differentiate the HDMI or DP even the encoder type is the > "INTEL_OUTPUT_DDI", I still have the "trybot" intermittent test failures > with new DRM connector types. Even worse, there is phantom > "intel_encoder_hotplug()" call following the correct one: > When connecting both DP and HDMI on the platform, unplug the DP, the > "i915_hotplug_work_func()" first calls the "intel_encoder_hotplug()" > with DP encoder, then calls again with HDMI encoder. > I haven't identified if the work function get queued twice or itself > is incorrectly identifying wrong encoder hotplut status. Will try to > get everything cleaned up ASAP. > Thanks, > Guang > > > > Anything I can help? Maybe test in a more complicated use case? I have lots of different laptops/AIOs/Desktops if you need. Chris > On Tue, Oct 30, 2018 at 1:24 AM Guang Bai wrote: > > > > > On Tue, 23 Oct 2018 17:14:34 +0800 > > > Chris Chiu wrote: > > > > > > > On Thu, Oct 11, 2018 at 2:04 AM Guang Bai > > > > wrote: > > > > > On Mon, 8 Oct 2018 08:56:20 -0700 > > > > > Guang Bai wrote: > > > > > > > > > > > On Mon, 8 Oct 2018 22:35:34 +0800 > > > > > > Chris Chiu wrote: > > > > > > > > > > > > > Thanks! I have no problem with this patch. > > > > > > > > > > > > There are Fi.CI.BAT failures with the v2 (only with > > > > > > formatting fix added) while the previous patch had passing > > > > > > results. Now trying to identify why the failures happened > > > > > > with trybot Thanks, > > > > > > Guang > > > > > The tribot run my patch twice and passes the tests without any > > > > > error however I'm recommended to chase down root causes of > > > > > Patchwork Fi.CI.BAT test errors still - WIP on that. > > > > > Thanks, > > > > > Guang > > > > > > > > > > > > > Gentle ping. Any good news on this? > > > > > > > > Chris > > > > > > > Sorry...was distracted by other dev taks...will get update ASAP. > > > -Guang > > > > > > > > > > > > > > > > > > > > > > > > On Thu, Oct 4, 2018 at 2:08 AM Guang Bai > > > > > > > wrote: > > > > > > > > On some platforms, slowly unplugging (wiggling) the HDMI > > > > > > > > cable makes the kernel to believe the HDMI display still > > > > > > > > connected. This is because the HDMI DDC lines are > > > > > > > > disconnected sometimes later after the hot-plug interrupt > > > > > > > > triggered. Use the hot plug live states to honor HDMI hot > > > > > > > > plug status in addtion to access the DDC channels. > > > > > > > > > > > > > > > > v2: Fix the formatting issue > > > > > > > > > > > > > > > > Cc: Jani Nikula > > > > > > > > Cc: Chris Chiu > > > > > > > > Signed-off-by: Guang Bai > > > > > > > > --- > > > > > > > > drivers/gpu/drm/i915/intel_hotplug.c | 32 > > > > > > > > +--- 1 file changed, 29 > > > > > > > > insertions(+), 3 deletions(-) > > > > > > > > > > > > > > > > diff --git a/drivers/gpu/drm/i915/intel_hotplug.c > > > > > > > > b/drivers/gpu/drm/i915/intel_hotplug.c > > > > > > > > index 648a13c..98ab1ab 100644 > > > > > > > > --- a/drivers/gpu/drm/i915/intel_hotplug.c > > > > > > > > +++ b/drivers/gpu/drm/i915/intel_hotplug.c > > > > > > > > @@ -246,17 +246,43 @@ static void > > > > > > > > intel_hpd_irq_storm_reenable_work(struct work_struct > > > > > > > > *work) intel_runtime_pm_put(dev_priv); > > > > > > > > } > > > > > > > > > > > > > > > > +#define MAX_SHORT_PULSE_MS 100 > > > > > > > > +#define PORT_CHECK_LOOP_COUNT 3 > > > > > > > > + > > > > > > > > bool intel_encoder_hotplug(struct intel_encoder *encoder, > > > > > > > >struct intel_connector > > > > > > > > *connector) { > > > > > > > > struct drm_device *dev = connector->base.dev; > > > > > > > > - enum drm_connector_status old_status; > > > > > > > > + enum drm_connector_status old_status, new_status; > > > > > > > > + enum hpd_pin pin = encoder->hpd_pin; > > > > > > > > + struct drm_i915_private *dev_priv = > > > > > > > > to_i915(encoder->base.dev); > > > > > > > > + u32 count = 0; > > > > > > > > > > > > > > > > WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); > > > > > > > > old_status = connector->base.status; > > > > > > > > > > > > > > > > - connector->base.status = > > > > > > > > - drm_helper_probe_detect(&connector->base, > > > > > > > > NULL, false); > > > > > > > > + /* > > > > > > > > +* Set HDMI connection status based on hot-plug > > > > > > > > live states and > > > > > > > > +* display probe results. > > > > > > > > +*/ > > > > > > > > + if ((encoder->type == INTEL_OUTPUT_HDMI || > > > > > > > > +encoder->type == INTEL_OUTPUT
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v2)
On Mon, 12 Nov 2018, Guang Bai wrote: > Actually I'm still working on it right now with > DRM_MODE_CONNECTOR_HDMIA/HDMIB, recommended by James, I'm able to > differentiate the HDMI or DP even the encoder type is the > "INTEL_OUTPUT_DDI", I still have the "trybot" intermittent test failures > with new DRM connector types. Even worse, there is phantom > "intel_encoder_hotplug()" call following the correct one: > When connecting both DP and HDMI on the platform, unplug the DP, the > "i915_hotplug_work_func()" first calls the "intel_encoder_hotplug()" > with DP encoder, then calls again with HDMI encoder. > I haven't identified if the work function get queued twice or itself > is incorrectly identifying wrong encoder hotplut status. Will try to > get everything cleaned up ASAP. Frankly I liked the simplicity of [1] over the patch in this thread. It fixed the real-world use case Chris Chiu has, but I understand that it still failed the slow unplug HDMI test case you have. The problem is, we have zero visibility to the test case you have. Is it automated or manual? Can we see the specs or source code for the test case? If we have to consider the live status unreliable, it's possible to devise a pathological test case that will always fail, regardless of what we do in the driver. Does the test case reflect real world usage? Also Cc: Ville for input. BR, Jani. [1] http://patchwork.freedesktop.org/patch/msgid/20180925071836.24711-1-jani.nik...@intel.com -- Jani Nikula, Intel Open Source Graphics Center ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v2)
On Tue, 13 Nov 2018 09:04:37 +0800 Chris Chiu wrote: > Gentle ping. Just want to know if you have time for this so far. > Thanks > > Chris Actually I'm still working on it right now with DRM_MODE_CONNECTOR_HDMIA/HDMIB, recommended by James, I'm able to differentiate the HDMI or DP even the encoder type is the "INTEL_OUTPUT_DDI", I still have the "trybot" intermittent test failures with new DRM connector types. Even worse, there is phantom "intel_encoder_hotplug()" call following the correct one: When connecting both DP and HDMI on the platform, unplug the DP, the "i915_hotplug_work_func()" first calls the "intel_encoder_hotplug()" with DP encoder, then calls again with HDMI encoder. I haven't identified if the work function get queued twice or itself is incorrectly identifying wrong encoder hotplut status. Will try to get everything cleaned up ASAP. Thanks, Guang > > On Tue, Oct 30, 2018 at 1:24 AM Guang Bai wrote: > > > On Tue, 23 Oct 2018 17:14:34 +0800 > > Chris Chiu wrote: > > > > > On Thu, Oct 11, 2018 at 2:04 AM Guang Bai > > > wrote: > > > > On Mon, 8 Oct 2018 08:56:20 -0700 > > > > Guang Bai wrote: > > > > > > > > > On Mon, 8 Oct 2018 22:35:34 +0800 > > > > > Chris Chiu wrote: > > > > > > > > > > > Thanks! I have no problem with this patch. > > > > > > > > > > There are Fi.CI.BAT failures with the v2 (only with > > > > > formatting fix added) while the previous patch had passing > > > > > results. Now trying to identify why the failures happened > > > > > with trybot Thanks, > > > > > Guang > > > > The tribot run my patch twice and passes the tests without any > > > > error however I'm recommended to chase down root causes of > > > > Patchwork Fi.CI.BAT test errors still - WIP on that. > > > > Thanks, > > > > Guang > > > > > > > > > > Gentle ping. Any good news on this? > > > > > > Chris > > > > > Sorry...was distracted by other dev taks...will get update ASAP. > > -Guang > > > > > > > > > > > > > > > > > > > > On Thu, Oct 4, 2018 at 2:08 AM Guang Bai > > > > > > wrote: > > > > > > > On some platforms, slowly unplugging (wiggling) the HDMI > > > > > > > cable makes the kernel to believe the HDMI display still > > > > > > > connected. This is because the HDMI DDC lines are > > > > > > > disconnected sometimes later after the hot-plug interrupt > > > > > > > triggered. Use the hot plug live states to honor HDMI hot > > > > > > > plug status in addtion to access the DDC channels. > > > > > > > > > > > > > > v2: Fix the formatting issue > > > > > > > > > > > > > > Cc: Jani Nikula > > > > > > > Cc: Chris Chiu > > > > > > > Signed-off-by: Guang Bai > > > > > > > --- > > > > > > > drivers/gpu/drm/i915/intel_hotplug.c | 32 > > > > > > > +--- 1 file changed, 29 > > > > > > > insertions(+), 3 deletions(-) > > > > > > > > > > > > > > diff --git a/drivers/gpu/drm/i915/intel_hotplug.c > > > > > > > b/drivers/gpu/drm/i915/intel_hotplug.c > > > > > > > index 648a13c..98ab1ab 100644 > > > > > > > --- a/drivers/gpu/drm/i915/intel_hotplug.c > > > > > > > +++ b/drivers/gpu/drm/i915/intel_hotplug.c > > > > > > > @@ -246,17 +246,43 @@ static void > > > > > > > intel_hpd_irq_storm_reenable_work(struct work_struct > > > > > > > *work) intel_runtime_pm_put(dev_priv); > > > > > > > } > > > > > > > > > > > > > > +#define MAX_SHORT_PULSE_MS 100 > > > > > > > +#define PORT_CHECK_LOOP_COUNT 3 > > > > > > > + > > > > > > > bool intel_encoder_hotplug(struct intel_encoder *encoder, > > > > > > >struct intel_connector > > > > > > > *connector) { > > > > > > > struct drm_device *dev = connector->base.dev; > > > > > > > - enum drm_connector_status old_status; > > > > > > > + enum drm_connector_status old_status, new_status; > > > > > > > + enum hpd_pin pin = encoder->hpd_pin; > > > > > > > + struct drm_i915_private *dev_priv = > > > > > > > to_i915(encoder->base.dev); > > > > > > > + u32 count = 0; > > > > > > > > > > > > > > WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); > > > > > > > old_status = connector->base.status; > > > > > > > > > > > > > > - connector->base.status = > > > > > > > - drm_helper_probe_detect(&connector->base, > > > > > > > NULL, false); > > > > > > > + /* > > > > > > > +* Set HDMI connection status based on hot-plug > > > > > > > live states and > > > > > > > +* display probe results. > > > > > > > +*/ > > > > > > > + if ((encoder->type == INTEL_OUTPUT_HDMI || > > > > > > > +encoder->type == INTEL_OUTPUT_DDI) && > > > > > > > + dev_priv->hotplug.stats[pin].state == > > > > > > > HPD_ENABLED) { > > > > > > > + do { > > > > > > > + new_status = > > > > > > > connector_status_disconnected; > > > > > > > + msleep(MAX_SHORT_PULSE_MS); > > > > > > > + > > > > > > > + if > > > > > > > (intel_digital_port
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v2)
Gentle ping. Just want to know if you have time for this so far. Thanks Chris On Tue, Oct 30, 2018 at 1:24 AM Guang Bai wrote: > On Tue, 23 Oct 2018 17:14:34 +0800 > Chris Chiu wrote: > > > On Thu, Oct 11, 2018 at 2:04 AM Guang Bai wrote: > > > > > On Mon, 8 Oct 2018 08:56:20 -0700 > > > Guang Bai wrote: > > > > > > > On Mon, 8 Oct 2018 22:35:34 +0800 > > > > Chris Chiu wrote: > > > > > > > > > Thanks! I have no problem with this patch. > > > > > > > > There are Fi.CI.BAT failures with the v2 (only with formatting fix > > > > added) while the previous patch had passing results. > > > > Now trying to identify why the failures happened with trybot > > > > Thanks, > > > > Guang > > > The tribot run my patch twice and passes the tests without any error > > > however I'm recommended to chase down root causes of Patchwork > > > Fi.CI.BAT test errors still - WIP on that. > > > Thanks, > > > Guang > > > > > > > Gentle ping. Any good news on this? > > > > Chris > > > Sorry...was distracted by other dev taks...will get update ASAP. > -Guang > > > > > > > > > > > > > > > > On Thu, Oct 4, 2018 at 2:08 AM Guang Bai > > > > > wrote: > > > > > > On some platforms, slowly unplugging (wiggling) the HDMI cable > > > > > > makes the kernel to believe the HDMI display still connected. > > > > > > This is because the HDMI DDC lines are disconnected sometimes > > > > > > later after the hot-plug interrupt triggered. Use the hot plug > > > > > > live states to honor HDMI hot plug status in addtion to access > > > > > > the DDC channels. > > > > > > > > > > > > v2: Fix the formatting issue > > > > > > > > > > > > Cc: Jani Nikula > > > > > > Cc: Chris Chiu > > > > > > Signed-off-by: Guang Bai > > > > > > --- > > > > > > drivers/gpu/drm/i915/intel_hotplug.c | 32 > > > > > > +--- 1 file changed, 29 > > > > > > insertions(+), 3 deletions(-) > > > > > > > > > > > > diff --git a/drivers/gpu/drm/i915/intel_hotplug.c > > > > > > b/drivers/gpu/drm/i915/intel_hotplug.c > > > > > > index 648a13c..98ab1ab 100644 > > > > > > --- a/drivers/gpu/drm/i915/intel_hotplug.c > > > > > > +++ b/drivers/gpu/drm/i915/intel_hotplug.c > > > > > > @@ -246,17 +246,43 @@ static void > > > > > > intel_hpd_irq_storm_reenable_work(struct work_struct *work) > > > > > > intel_runtime_pm_put(dev_priv); > > > > > > } > > > > > > > > > > > > +#define MAX_SHORT_PULSE_MS 100 > > > > > > +#define PORT_CHECK_LOOP_COUNT 3 > > > > > > + > > > > > > bool intel_encoder_hotplug(struct intel_encoder *encoder, > > > > > >struct intel_connector *connector) > > > > > > { > > > > > > struct drm_device *dev = connector->base.dev; > > > > > > - enum drm_connector_status old_status; > > > > > > + enum drm_connector_status old_status, new_status; > > > > > > + enum hpd_pin pin = encoder->hpd_pin; > > > > > > + struct drm_i915_private *dev_priv = > > > > > > to_i915(encoder->base.dev); > > > > > > + u32 count = 0; > > > > > > > > > > > > WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); > > > > > > old_status = connector->base.status; > > > > > > > > > > > > - connector->base.status = > > > > > > - drm_helper_probe_detect(&connector->base, > > > > > > NULL, false); > > > > > > + /* > > > > > > +* Set HDMI connection status based on hot-plug live > > > > > > states and > > > > > > +* display probe results. > > > > > > +*/ > > > > > > + if ((encoder->type == INTEL_OUTPUT_HDMI || > > > > > > +encoder->type == INTEL_OUTPUT_DDI) && > > > > > > + dev_priv->hotplug.stats[pin].state == > > > > > > HPD_ENABLED) { > > > > > > + do { > > > > > > + new_status = > > > > > > connector_status_disconnected; > > > > > > + msleep(MAX_SHORT_PULSE_MS); > > > > > > + > > > > > > + if > > > > > > (intel_digital_port_connected(encoder)) > > > > > > + new_status = > > > > > > drm_helper_probe_detect(&connector->base, > > > > > > + > > > > > > NULL, false); > > > > > > + if (new_status == > > > > > > connector_status_connected) > > > > > > + break; > > > > > > + } while (++count <= PORT_CHECK_LOOP_COUNT); > > > > > > + connector->base.status = new_status; > > > > > > + } else { > > > > > > + connector->base.status = > > > > > > + > > > > > > drm_helper_probe_detect(&connector->base, NULL, false); > > > > > > + } > > > > > > > > > > > > if (old_status == connector->base.status) > > > > > > return false; > > > > > > -- > > > > > > 2.7.4 > > > > > > > > > > > > > > > > > > > > ___ > > > > Intel-gfx mailing list > > > > Intel-gfx@lists.freedesktop.org > > > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx > > >
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v2)
On Tue, 23 Oct 2018 17:14:34 +0800 Chris Chiu wrote: > On Thu, Oct 11, 2018 at 2:04 AM Guang Bai wrote: > > > On Mon, 8 Oct 2018 08:56:20 -0700 > > Guang Bai wrote: > > > > > On Mon, 8 Oct 2018 22:35:34 +0800 > > > Chris Chiu wrote: > > > > > > > Thanks! I have no problem with this patch. > > > > > > There are Fi.CI.BAT failures with the v2 (only with formatting fix > > > added) while the previous patch had passing results. > > > Now trying to identify why the failures happened with trybot > > > Thanks, > > > Guang > > The tribot run my patch twice and passes the tests without any error > > however I'm recommended to chase down root causes of Patchwork > > Fi.CI.BAT test errors still - WIP on that. > > Thanks, > > Guang > > > > Gentle ping. Any good news on this? > > Chris > Sorry...was distracted by other dev taks...will get update ASAP. -Guang > > > > > > > > > > > > On Thu, Oct 4, 2018 at 2:08 AM Guang Bai > > > > wrote: > > > > > On some platforms, slowly unplugging (wiggling) the HDMI cable > > > > > makes the kernel to believe the HDMI display still connected. > > > > > This is because the HDMI DDC lines are disconnected sometimes > > > > > later after the hot-plug interrupt triggered. Use the hot plug > > > > > live states to honor HDMI hot plug status in addtion to access > > > > > the DDC channels. > > > > > > > > > > v2: Fix the formatting issue > > > > > > > > > > Cc: Jani Nikula > > > > > Cc: Chris Chiu > > > > > Signed-off-by: Guang Bai > > > > > --- > > > > > drivers/gpu/drm/i915/intel_hotplug.c | 32 > > > > > +--- 1 file changed, 29 > > > > > insertions(+), 3 deletions(-) > > > > > > > > > > diff --git a/drivers/gpu/drm/i915/intel_hotplug.c > > > > > b/drivers/gpu/drm/i915/intel_hotplug.c > > > > > index 648a13c..98ab1ab 100644 > > > > > --- a/drivers/gpu/drm/i915/intel_hotplug.c > > > > > +++ b/drivers/gpu/drm/i915/intel_hotplug.c > > > > > @@ -246,17 +246,43 @@ static void > > > > > intel_hpd_irq_storm_reenable_work(struct work_struct *work) > > > > > intel_runtime_pm_put(dev_priv); > > > > > } > > > > > > > > > > +#define MAX_SHORT_PULSE_MS 100 > > > > > +#define PORT_CHECK_LOOP_COUNT 3 > > > > > + > > > > > bool intel_encoder_hotplug(struct intel_encoder *encoder, > > > > >struct intel_connector *connector) > > > > > { > > > > > struct drm_device *dev = connector->base.dev; > > > > > - enum drm_connector_status old_status; > > > > > + enum drm_connector_status old_status, new_status; > > > > > + enum hpd_pin pin = encoder->hpd_pin; > > > > > + struct drm_i915_private *dev_priv = > > > > > to_i915(encoder->base.dev); > > > > > + u32 count = 0; > > > > > > > > > > WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); > > > > > old_status = connector->base.status; > > > > > > > > > > - connector->base.status = > > > > > - drm_helper_probe_detect(&connector->base, > > > > > NULL, false); > > > > > + /* > > > > > +* Set HDMI connection status based on hot-plug live > > > > > states and > > > > > +* display probe results. > > > > > +*/ > > > > > + if ((encoder->type == INTEL_OUTPUT_HDMI || > > > > > +encoder->type == INTEL_OUTPUT_DDI) && > > > > > + dev_priv->hotplug.stats[pin].state == > > > > > HPD_ENABLED) { > > > > > + do { > > > > > + new_status = > > > > > connector_status_disconnected; > > > > > + msleep(MAX_SHORT_PULSE_MS); > > > > > + > > > > > + if > > > > > (intel_digital_port_connected(encoder)) > > > > > + new_status = > > > > > drm_helper_probe_detect(&connector->base, > > > > > + > > > > > NULL, false); > > > > > + if (new_status == > > > > > connector_status_connected) > > > > > + break; > > > > > + } while (++count <= PORT_CHECK_LOOP_COUNT); > > > > > + connector->base.status = new_status; > > > > > + } else { > > > > > + connector->base.status = > > > > > + > > > > > drm_helper_probe_detect(&connector->base, NULL, false); > > > > > + } > > > > > > > > > > if (old_status == connector->base.status) > > > > > return false; > > > > > -- > > > > > 2.7.4 > > > > > > > > > > > > > > > > ___ > > > Intel-gfx mailing list > > > Intel-gfx@lists.freedesktop.org > > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx > > > > ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v2)
On Thu, Oct 11, 2018 at 2:04 AM Guang Bai wrote: > On Mon, 8 Oct 2018 08:56:20 -0700 > Guang Bai wrote: > > > On Mon, 8 Oct 2018 22:35:34 +0800 > > Chris Chiu wrote: > > > > > Thanks! I have no problem with this patch. > > > > There are Fi.CI.BAT failures with the v2 (only with formatting fix > > added) while the previous patch had passing results. > > Now trying to identify why the failures happened with trybot > > Thanks, > > Guang > The tribot run my patch twice and passes the tests without any error > however I'm recommended to chase down root causes of Patchwork Fi.CI.BAT > test errors still - WIP on that. > Thanks, > Guang > Gentle ping. Any good news on this? Chris > > > > > > > > On Thu, Oct 4, 2018 at 2:08 AM Guang Bai > > > wrote: > > > > On some platforms, slowly unplugging (wiggling) the HDMI cable > > > > makes the kernel to believe the HDMI display still connected. > > > > This is because the HDMI DDC lines are disconnected sometimes > > > > later after the hot-plug interrupt triggered. Use the hot plug > > > > live states to honor HDMI hot plug status in addtion to access > > > > the DDC channels. > > > > > > > > v2: Fix the formatting issue > > > > > > > > Cc: Jani Nikula > > > > Cc: Chris Chiu > > > > Signed-off-by: Guang Bai > > > > --- > > > > drivers/gpu/drm/i915/intel_hotplug.c | 32 > > > > +--- 1 file changed, 29 insertions(+), > > > > 3 deletions(-) > > > > > > > > diff --git a/drivers/gpu/drm/i915/intel_hotplug.c > > > > b/drivers/gpu/drm/i915/intel_hotplug.c > > > > index 648a13c..98ab1ab 100644 > > > > --- a/drivers/gpu/drm/i915/intel_hotplug.c > > > > +++ b/drivers/gpu/drm/i915/intel_hotplug.c > > > > @@ -246,17 +246,43 @@ static void > > > > intel_hpd_irq_storm_reenable_work(struct work_struct *work) > > > > intel_runtime_pm_put(dev_priv); > > > > } > > > > > > > > +#define MAX_SHORT_PULSE_MS 100 > > > > +#define PORT_CHECK_LOOP_COUNT 3 > > > > + > > > > bool intel_encoder_hotplug(struct intel_encoder *encoder, > > > >struct intel_connector *connector) > > > > { > > > > struct drm_device *dev = connector->base.dev; > > > > - enum drm_connector_status old_status; > > > > + enum drm_connector_status old_status, new_status; > > > > + enum hpd_pin pin = encoder->hpd_pin; > > > > + struct drm_i915_private *dev_priv = > > > > to_i915(encoder->base.dev); > > > > + u32 count = 0; > > > > > > > > WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); > > > > old_status = connector->base.status; > > > > > > > > - connector->base.status = > > > > - drm_helper_probe_detect(&connector->base, NULL, > > > > false); > > > > + /* > > > > +* Set HDMI connection status based on hot-plug live > > > > states and > > > > +* display probe results. > > > > +*/ > > > > + if ((encoder->type == INTEL_OUTPUT_HDMI || > > > > +encoder->type == INTEL_OUTPUT_DDI) && > > > > + dev_priv->hotplug.stats[pin].state == HPD_ENABLED) { > > > > + do { > > > > + new_status = > > > > connector_status_disconnected; > > > > + msleep(MAX_SHORT_PULSE_MS); > > > > + > > > > + if (intel_digital_port_connected(encoder)) > > > > + new_status = > > > > drm_helper_probe_detect(&connector->base, > > > > + > > > > NULL, false); > > > > + if (new_status == > > > > connector_status_connected) > > > > + break; > > > > + } while (++count <= PORT_CHECK_LOOP_COUNT); > > > > + connector->base.status = new_status; > > > > + } else { > > > > + connector->base.status = > > > > + drm_helper_probe_detect(&connector->base, > > > > NULL, false); > > > > + } > > > > > > > > if (old_status == connector->base.status) > > > > return false; > > > > -- > > > > 2.7.4 > > > > > > > > > > > > ___ > > Intel-gfx mailing list > > Intel-gfx@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx > > ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v2)
On Mon, 8 Oct 2018 08:56:20 -0700 Guang Bai wrote: > On Mon, 8 Oct 2018 22:35:34 +0800 > Chris Chiu wrote: > > > Thanks! I have no problem with this patch. > > There are Fi.CI.BAT failures with the v2 (only with formatting fix > added) while the previous patch had passing results. > Now trying to identify why the failures happened with trybot > Thanks, > Guang The tribot run my patch twice and passes the tests without any error however I'm recommended to chase down root causes of Patchwork Fi.CI.BAT test errors still - WIP on that. Thanks, Guang > > > > > On Thu, Oct 4, 2018 at 2:08 AM Guang Bai > > wrote: > > > On some platforms, slowly unplugging (wiggling) the HDMI cable > > > makes the kernel to believe the HDMI display still connected. > > > This is because the HDMI DDC lines are disconnected sometimes > > > later after the hot-plug interrupt triggered. Use the hot plug > > > live states to honor HDMI hot plug status in addtion to access > > > the DDC channels. > > > > > > v2: Fix the formatting issue > > > > > > Cc: Jani Nikula > > > Cc: Chris Chiu > > > Signed-off-by: Guang Bai > > > --- > > > drivers/gpu/drm/i915/intel_hotplug.c | 32 > > > +--- 1 file changed, 29 insertions(+), > > > 3 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/i915/intel_hotplug.c > > > b/drivers/gpu/drm/i915/intel_hotplug.c > > > index 648a13c..98ab1ab 100644 > > > --- a/drivers/gpu/drm/i915/intel_hotplug.c > > > +++ b/drivers/gpu/drm/i915/intel_hotplug.c > > > @@ -246,17 +246,43 @@ static void > > > intel_hpd_irq_storm_reenable_work(struct work_struct *work) > > > intel_runtime_pm_put(dev_priv); > > > } > > > > > > +#define MAX_SHORT_PULSE_MS 100 > > > +#define PORT_CHECK_LOOP_COUNT 3 > > > + > > > bool intel_encoder_hotplug(struct intel_encoder *encoder, > > >struct intel_connector *connector) > > > { > > > struct drm_device *dev = connector->base.dev; > > > - enum drm_connector_status old_status; > > > + enum drm_connector_status old_status, new_status; > > > + enum hpd_pin pin = encoder->hpd_pin; > > > + struct drm_i915_private *dev_priv = > > > to_i915(encoder->base.dev); > > > + u32 count = 0; > > > > > > WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); > > > old_status = connector->base.status; > > > > > > - connector->base.status = > > > - drm_helper_probe_detect(&connector->base, NULL, > > > false); > > > + /* > > > +* Set HDMI connection status based on hot-plug live > > > states and > > > +* display probe results. > > > +*/ > > > + if ((encoder->type == INTEL_OUTPUT_HDMI || > > > +encoder->type == INTEL_OUTPUT_DDI) && > > > + dev_priv->hotplug.stats[pin].state == HPD_ENABLED) { > > > + do { > > > + new_status = > > > connector_status_disconnected; > > > + msleep(MAX_SHORT_PULSE_MS); > > > + > > > + if (intel_digital_port_connected(encoder)) > > > + new_status = > > > drm_helper_probe_detect(&connector->base, > > > + > > > NULL, false); > > > + if (new_status == > > > connector_status_connected) > > > + break; > > > + } while (++count <= PORT_CHECK_LOOP_COUNT); > > > + connector->base.status = new_status; > > > + } else { > > > + connector->base.status = > > > + drm_helper_probe_detect(&connector->base, > > > NULL, false); > > > + } > > > > > > if (old_status == connector->base.status) > > > return false; > > > -- > > > 2.7.4 > > > > > > > > ___ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v2)
On Mon, 8 Oct 2018 22:35:34 +0800 Chris Chiu wrote: > Thanks! I have no problem with this patch. There are Fi.CI.BAT failures with the v2 (only with formatting fix added) while the previous patch had passing results. Now trying to identify why the failures happened with trybot Thanks, Guang > > On Thu, Oct 4, 2018 at 2:08 AM Guang Bai wrote: > > > On some platforms, slowly unplugging (wiggling) the HDMI cable makes > > the kernel to believe the HDMI display still connected. This is > > because the HDMI DDC lines are disconnected sometimes later after > > the hot-plug interrupt triggered. Use the hot plug live states to > > honor HDMI hot plug status in addtion to access the DDC channels. > > > > v2: Fix the formatting issue > > > > Cc: Jani Nikula > > Cc: Chris Chiu > > Signed-off-by: Guang Bai > > --- > > drivers/gpu/drm/i915/intel_hotplug.c | 32 > > +--- 1 file changed, 29 insertions(+), > > 3 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_hotplug.c > > b/drivers/gpu/drm/i915/intel_hotplug.c > > index 648a13c..98ab1ab 100644 > > --- a/drivers/gpu/drm/i915/intel_hotplug.c > > +++ b/drivers/gpu/drm/i915/intel_hotplug.c > > @@ -246,17 +246,43 @@ static void > > intel_hpd_irq_storm_reenable_work(struct work_struct *work) > > intel_runtime_pm_put(dev_priv); > > } > > > > +#define MAX_SHORT_PULSE_MS 100 > > +#define PORT_CHECK_LOOP_COUNT 3 > > + > > bool intel_encoder_hotplug(struct intel_encoder *encoder, > >struct intel_connector *connector) > > { > > struct drm_device *dev = connector->base.dev; > > - enum drm_connector_status old_status; > > + enum drm_connector_status old_status, new_status; > > + enum hpd_pin pin = encoder->hpd_pin; > > + struct drm_i915_private *dev_priv = > > to_i915(encoder->base.dev); > > + u32 count = 0; > > > > WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); > > old_status = connector->base.status; > > > > - connector->base.status = > > - drm_helper_probe_detect(&connector->base, NULL, > > false); > > + /* > > +* Set HDMI connection status based on hot-plug live states > > and > > +* display probe results. > > +*/ > > + if ((encoder->type == INTEL_OUTPUT_HDMI || > > +encoder->type == INTEL_OUTPUT_DDI) && > > + dev_priv->hotplug.stats[pin].state == HPD_ENABLED) { > > + do { > > + new_status = connector_status_disconnected; > > + msleep(MAX_SHORT_PULSE_MS); > > + > > + if (intel_digital_port_connected(encoder)) > > + new_status = > > drm_helper_probe_detect(&connector->base, > > + > > NULL, false); > > + if (new_status == > > connector_status_connected) > > + break; > > + } while (++count <= PORT_CHECK_LOOP_COUNT); > > + connector->base.status = new_status; > > + } else { > > + connector->base.status = > > + drm_helper_probe_detect(&connector->base, > > NULL, false); > > + } > > > > if (old_status == connector->base.status) > > return false; > > -- > > 2.7.4 > > > > ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v2)
Thanks! I have no problem with this patch. On Thu, Oct 4, 2018 at 2:08 AM Guang Bai wrote: > On some platforms, slowly unplugging (wiggling) the HDMI cable makes > the kernel to believe the HDMI display still connected. This is because > the HDMI DDC lines are disconnected sometimes later after the hot-plug > interrupt triggered. Use the hot plug live states to honor HDMI hot plug > status in addtion to access the DDC channels. > > v2: Fix the formatting issue > > Cc: Jani Nikula > Cc: Chris Chiu > Signed-off-by: Guang Bai > --- > drivers/gpu/drm/i915/intel_hotplug.c | 32 +--- > 1 file changed, 29 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_hotplug.c > b/drivers/gpu/drm/i915/intel_hotplug.c > index 648a13c..98ab1ab 100644 > --- a/drivers/gpu/drm/i915/intel_hotplug.c > +++ b/drivers/gpu/drm/i915/intel_hotplug.c > @@ -246,17 +246,43 @@ static void intel_hpd_irq_storm_reenable_work(struct > work_struct *work) > intel_runtime_pm_put(dev_priv); > } > > +#define MAX_SHORT_PULSE_MS 100 > +#define PORT_CHECK_LOOP_COUNT 3 > + > bool intel_encoder_hotplug(struct intel_encoder *encoder, >struct intel_connector *connector) > { > struct drm_device *dev = connector->base.dev; > - enum drm_connector_status old_status; > + enum drm_connector_status old_status, new_status; > + enum hpd_pin pin = encoder->hpd_pin; > + struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > + u32 count = 0; > > WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); > old_status = connector->base.status; > > - connector->base.status = > - drm_helper_probe_detect(&connector->base, NULL, false); > + /* > +* Set HDMI connection status based on hot-plug live states and > +* display probe results. > +*/ > + if ((encoder->type == INTEL_OUTPUT_HDMI || > +encoder->type == INTEL_OUTPUT_DDI) && > + dev_priv->hotplug.stats[pin].state == HPD_ENABLED) { > + do { > + new_status = connector_status_disconnected; > + msleep(MAX_SHORT_PULSE_MS); > + > + if (intel_digital_port_connected(encoder)) > + new_status = > drm_helper_probe_detect(&connector->base, > +NULL, > false); > + if (new_status == connector_status_connected) > + break; > + } while (++count <= PORT_CHECK_LOOP_COUNT); > + connector->base.status = new_status; > + } else { > + connector->base.status = > + drm_helper_probe_detect(&connector->base, NULL, > false); > + } > > if (old_status == connector->base.status) > return false; > -- > 2.7.4 > > ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure (v2)
On some platforms, slowly unplugging (wiggling) the HDMI cable makes the kernel to believe the HDMI display still connected. This is because the HDMI DDC lines are disconnected sometimes later after the hot-plug interrupt triggered. Use the hot plug live states to honor HDMI hot plug status in addtion to access the DDC channels. v2: Fix the formatting issue Cc: Jani Nikula Cc: Chris Chiu Signed-off-by: Guang Bai --- drivers/gpu/drm/i915/intel_hotplug.c | 32 +--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c index 648a13c..98ab1ab 100644 --- a/drivers/gpu/drm/i915/intel_hotplug.c +++ b/drivers/gpu/drm/i915/intel_hotplug.c @@ -246,17 +246,43 @@ static void intel_hpd_irq_storm_reenable_work(struct work_struct *work) intel_runtime_pm_put(dev_priv); } +#define MAX_SHORT_PULSE_MS 100 +#define PORT_CHECK_LOOP_COUNT 3 + bool intel_encoder_hotplug(struct intel_encoder *encoder, struct intel_connector *connector) { struct drm_device *dev = connector->base.dev; - enum drm_connector_status old_status; + enum drm_connector_status old_status, new_status; + enum hpd_pin pin = encoder->hpd_pin; + struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); + u32 count = 0; WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); old_status = connector->base.status; - connector->base.status = - drm_helper_probe_detect(&connector->base, NULL, false); + /* +* Set HDMI connection status based on hot-plug live states and +* display probe results. +*/ + if ((encoder->type == INTEL_OUTPUT_HDMI || +encoder->type == INTEL_OUTPUT_DDI) && + dev_priv->hotplug.stats[pin].state == HPD_ENABLED) { + do { + new_status = connector_status_disconnected; + msleep(MAX_SHORT_PULSE_MS); + + if (intel_digital_port_connected(encoder)) + new_status = drm_helper_probe_detect(&connector->base, +NULL, false); + if (new_status == connector_status_connected) + break; + } while (++count <= PORT_CHECK_LOOP_COUNT); + connector->base.status = new_status; + } else { + connector->base.status = + drm_helper_probe_detect(&connector->base, NULL, false); + } if (old_status == connector->base.status) return false; -- 2.7.4 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Re: [Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure
It works on my problematic laptops. Verified on X530UN and X560UD. On Wed, Oct 3, 2018 at 1:23 PM Guang Bai wrote: > > On some platforms, slowly unplugging (wiggling) the HDMI cable makes > the kernel to believe the HDMI display still connected. This is because > the HDMI DDC lines are disconnected sometimes later after the hot-plug > interrupt triggered. Use the hot plug live states to honor HDMI hot plug > status in addtion to access the DDC channels. > > Cc: Jani Nikula > Cc: Chris Chiu > Signed-off-by: Guang Bai > --- > drivers/gpu/drm/i915/intel_hotplug.c | 31 --- > 1 file changed, 28 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_hotplug.c > b/drivers/gpu/drm/i915/intel_hotplug.c > index 648a13c..db6288f 100644 > --- a/drivers/gpu/drm/i915/intel_hotplug.c > +++ b/drivers/gpu/drm/i915/intel_hotplug.c > @@ -246,17 +246,42 @@ static void intel_hpd_irq_storm_reenable_work(struct > work_struct *work) > intel_runtime_pm_put(dev_priv); > } > > +#define MAX_SHORT_PULSE_MS 100 > +#define PORT_CHECK_LOOP_COUNT 3 > + > bool intel_encoder_hotplug(struct intel_encoder *encoder, >struct intel_connector *connector) > { > struct drm_device *dev = connector->base.dev; > - enum drm_connector_status old_status; > + enum drm_connector_status old_status, new_status; > + enum hpd_pin pin = encoder->hpd_pin; > + struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > + u32 count = 0; > > WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); > old_status = connector->base.status; > > - connector->base.status = > - drm_helper_probe_detect(&connector->base, NULL, false); > + /* > +* Set HDMI connection status based on hot-plug live states and > +* display probe results. > +*/ > + if ((encoder->type == INTEL_OUTPUT_HDMI || > +encoder->type == INTEL_OUTPUT_DDI) && > + dev_priv->hotplug.stats[pin].state == HPD_ENABLED) { > + do { > + new_status = connector_status_disconnected; > + msleep(MAX_SHORT_PULSE_MS); > + > + if (intel_digital_port_connected(encoder)) > + new_status = > drm_helper_probe_detect(&connector->base, > +NULL, > false); > + if (new_status == connector_status_connected) > + break; > + } while (++count <= PORT_CHECK_LOOP_COUNT); > + connector->base.status = new_status; > + } else > + connector->base.status = > + drm_helper_probe_detect(&connector->base, NULL, > false); > > if (old_status == connector->base.status) > return false; > -- > 2.7.4 > ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
[Intel-gfx] [PATCH] drm/i915: Fix the HDMI hot plug disconnection failure
On some platforms, slowly unplugging (wiggling) the HDMI cable makes the kernel to believe the HDMI display still connected. This is because the HDMI DDC lines are disconnected sometimes later after the hot-plug interrupt triggered. Use the hot plug live states to honor HDMI hot plug status in addtion to access the DDC channels. Cc: Jani Nikula Cc: Chris Chiu Signed-off-by: Guang Bai --- drivers/gpu/drm/i915/intel_hotplug.c | 31 --- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c index 648a13c..db6288f 100644 --- a/drivers/gpu/drm/i915/intel_hotplug.c +++ b/drivers/gpu/drm/i915/intel_hotplug.c @@ -246,17 +246,42 @@ static void intel_hpd_irq_storm_reenable_work(struct work_struct *work) intel_runtime_pm_put(dev_priv); } +#define MAX_SHORT_PULSE_MS 100 +#define PORT_CHECK_LOOP_COUNT 3 + bool intel_encoder_hotplug(struct intel_encoder *encoder, struct intel_connector *connector) { struct drm_device *dev = connector->base.dev; - enum drm_connector_status old_status; + enum drm_connector_status old_status, new_status; + enum hpd_pin pin = encoder->hpd_pin; + struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); + u32 count = 0; WARN_ON(!mutex_is_locked(&dev->mode_config.mutex)); old_status = connector->base.status; - connector->base.status = - drm_helper_probe_detect(&connector->base, NULL, false); + /* +* Set HDMI connection status based on hot-plug live states and +* display probe results. +*/ + if ((encoder->type == INTEL_OUTPUT_HDMI || +encoder->type == INTEL_OUTPUT_DDI) && + dev_priv->hotplug.stats[pin].state == HPD_ENABLED) { + do { + new_status = connector_status_disconnected; + msleep(MAX_SHORT_PULSE_MS); + + if (intel_digital_port_connected(encoder)) + new_status = drm_helper_probe_detect(&connector->base, +NULL, false); + if (new_status == connector_status_connected) + break; + } while (++count <= PORT_CHECK_LOOP_COUNT); + connector->base.status = new_status; + } else + connector->base.status = + drm_helper_probe_detect(&connector->base, NULL, false); if (old_status == connector->base.status) return false; -- 2.7.4 ___ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx