Underflow and freezing nvdisplay arise on our board with two HDMI ports

WayneWWW,

I plug a 4k monitor then TX2 detects plugging.
After that, however, TX2 unplugs and re-plugs by itself.
It occurs on our carrier board and devkit.

It seems the self unplugging/plugging can cause the error in several cases, such as #8.

I post log in #8 case B.

  • On [2135.125270], I plug 4k monitor to HDMI-1 port
  • On [2136.979614], TX2 unplugs the monitor by itself
  • On [2137.083258], TX2 plugs the monitor again by itself
  • After [2138.303987], TX2 hit the error
[ 2135.119818] tegradc 15210000.nvdisplay: blank - powerdown
<b>[ 2135.125270] tegradc 15210000.nvdisplay: hdmi: plugged</b>
[ 2135.132453] tegradc 15200000.nvdisplay: blank - powerdown
[ 2135.199375] PD DISP1 index3 DOWN
[ 2135.199463] PD DISP0 index2 DOWN
[ 2135.212063] tegradc 15200000.nvdisplay: unblank
[ 2135.212074] PD DISP0 index2 UP
[ 2135.212986] PD DISP1 index3 UP
[ 2135.214173] Parent Clock set for DC plld3
[ 2135.215559] tegradc 15200000.nvdisplay: hdmi: pclk:148500K, set prod-setting:prod_c_150M
[ 2135.272194] tegradc 15200000.nvdisplay: unblank
[ 2135.276761] tegradc 15210000.nvdisplay: blank - powerdown
[ 2135.384674] tegradc 15200000.nvdisplay: blank - powerdown
[ 2135.454616] PD DISP1 index3 DOWN
[ 2135.454699] PD DISP0 index2 DOWN
[ 2135.467224] tegradc 15200000.nvdisplay: unblank
[ 2135.467236] PD DISP0 index2 UP
[ 2135.468161] PD DISP1 index3 UP
[ 2135.469371] Parent Clock set for DC plld3
[ 2135.470737] tegradc 15200000.nvdisplay: hdmi: pclk:148500K, set prod-setting:prod_c_150M
[ 2135.527397] tegradc 15200000.nvdisplay: unblank
[ 2135.531957] tegradc 15210000.nvdisplay: blank - powerdown
[ 2135.589840] tegradc 15200000.nvdisplay: blank - powerdown
[ 2135.659804] PD DISP1 index3 DOWN
[ 2135.659890] PD DISP0 index2 DOWN
[ 2135.672507] tegradc 15200000.nvdisplay: unblank
[ 2135.672519] PD DISP0 index2 UP
[ 2135.673418] PD DISP1 index3 UP
[ 2135.674601] Parent Clock set for DC plld3
[ 2135.676082] tegradc 15200000.nvdisplay: hdmi: pclk:148500K, set prod-setting:prod_c_150M
[ 2135.732776] tegradc 15200000.nvdisplay: unblank
[ 2135.737339] tegradc 15210000.nvdisplay: blank - powerdown
[ 2135.742753] tegradc 15210000.nvdisplay: unblank
[ 2135.742764] PD DISP2 index4 UP
[ 2135.743242] Parent Clock set for DC plld2
[ 2135.748709] tegradc 15210000.nvdisplay: hdmi: pclk:594000K, set prod-setting:prod_c_600M
[ 2136.799724] tegradc 15210000.nvdisplay: unblank
[ 2136.970780] PD DISP2 index4 DOWN
[ 2136.974164] tegradc 15210000.nvdisplay: blank - powerdown
<b>[ 2136.979614] tegradc 15210000.nvdisplay: hdmi: unplugged</b>
[ 2136.994659] tegradc 15200000.nvdisplay: blank - powerdown
[ 2137.065116] PD DISP1 index3 DOWN
[ 2137.065202] PD DISP0 index2 DOWN
[ 2137.077805] tegradc 15210000.nvdisplay: blank - powerdown
[ 2137.083237] tegradc 15200000.nvdisplay: unblank
[ 2137.083249] PD DISP0 index2 UP
<b>[ 2137.083258] tegradc 15210000.nvdisplay: hdmi: plugged</b>
[ 2137.084152] PD DISP1 index3 UP
[ 2137.085359] Parent Clock set for DC plld3
[ 2137.086737] tegradc 15200000.nvdisplay: hdmi: pclk:148500K, set prod-setting:prod_c_150M
[ 2137.148401] tegradc 15200000.nvdisplay: unblank
[ 2137.152976] tegradc 15210000.nvdisplay: blank - powerdown
[ 2137.158386] tegradc 15210000.nvdisplay: unblank
[ 2137.158397] PD DISP2 index4 UP
[ 2137.158866] Parent Clock set for DC plld2
[ 2137.164294] tegradc 15210000.nvdisplay: hdmi: pclk:594000K, set prod-setting:prod_c_600M
[ 2138.215708] tegradc 15210000.nvdisplay: unblank
[b][ 2138.303987] tegradc 15210000.nvdisplay: dc_poll_register 0x41: timeout
[ 2138.310521] tegradc 15210000.nvdisplay: dc timeout waiting for DC to stop
[ 2139.367988] tegradc 15210000.nvdisplay: dc_poll_register 0x41: timeout
[ 2139.374524] tegradc 15210000.nvdisplay: dc timeout waiting for DC to stop[/b]

Could you repro this issue on devkit by using same method as #8?
I’m sorry but I don’t have DISPLAY CONNECTOR - HDMI adapter. So I can’t try #8 on devkit.

okotar,

“After that, however, TX2 unplugs and re-plugs by itself.” → Do you mean you just keep cable connected and it just shows plugged/unplugged message??

WayneWWW,

Yes.

Could you monitor the gpio when this plugged/unplugged happens?

sudo -s
watch -n 0.1 cat /sys/kernel/debug/gpio

WayneWWW,

It’s difficult to monitor the gpio while running your commands via UART.
So I monitor them while running below commands instead.

sudo -s
while true; do cat /sys/kernel/debug/gpio | grep hdmi ; sleepenh 0.1 ; done;

And the log on devkit is following.

1462513590.257121
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  hi    
1462513590.391012
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
[  386.156480] tegradc 15210000.nvdisplay: blank - powerdown
<b>[  386.163340] tegradc 15210000.nvdisplay: hdmi: plugged</b>
1462513590.524716
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
[  386.213167] tegradc 15210000.nvdisplay: blank - powerdown
1462513590.634958
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513590.745336
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513590.858871
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513590.972479
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513591.084530
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513591.201320
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513591.316551
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513591.427704
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513591.540888
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
[  386.220894] tegradc 15210000.nvdisplay: unblank
[  386.220908] PD DISP0 index2 UP
[  386.221933] PD DISP1 index3 UP
[  386.222024] PD DISP2 index4 UP
[  386.223609] Parent Clock set for DC plld2
[  386.231116] tegradc 15210000.nvdisplay: hdmi: pclk:594000K, set prod-setting:prod_c_600M
[  387.289053] tegradc 15210000.nvdisplay: unblank
1462513591.651215
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  hi    
[  387.360878] tegradc 15210000.nvdisplay: blank - powerdown
[  387.420254] PD DISP2 index4 DOWN
1462513591.761335
[  387.422335] PD DISP1 index3 DOWN
[  387.422484] PD DISP0 index2 DOWN
[  387.440889] tegradc 15210000.nvdisplay: blank - powerdown
 gpio-252 (                    |vdd-h[  387.447752] tegradc 15210000.nvdisplay: unblank
dmi            ) out hi   <b>[  387.447792] tegradc 15210000.nvdisplay: hdmi: unplugged</b>
 
 gpio-441 (                  [  387.463129] tegradc 15210000.nvdisplay: unblank
  |hdmi2.0_hpd         ) in  lo    
[  387.515734] tegradc 15210000.nvdisplay: blank - powerdown
[  387.521234] tegradc 15210000.nvdisplay: unblank
[  387.525813] tegradc 15210000.nvdisplay: unblank
1462513591.883524
[  387.563279] tegradc 15210000.nvdisplay: blank - powerdown
<b>[  387.570279] tegradc 15210000.nvdisplay: hdmi: plugged</b>
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (  [  387.583456] tegradc 15210000.nvdisplay: blank - powerdown
                  |hdmi2.0_hpd         ) in  lo    
1462513592.011876
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513592.121530
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513592.232539
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513592.347385
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513592.458798
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513592.569486
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513592.678921
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513592.789524
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513592.902145
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
[  387.591658] tegradc 15210000.nvdisplay: unblank
[  387.591670] PD DISP0 index2 UP
[  387.592638] PD DISP1 index3 UP
[  387.592731] PD DISP2 index4 UP
[  387.594277] Parent Clock set for DC plld2
[  387.599878] tegradc 15210000.nvdisplay: hdmi: pclk:594000K, set prod-setting:prod_c_600M
[  388.672832] tegradc 15210000.nvdisplay: unblank
1462513593.015642
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513593.131017
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
[  388.779274] tegradc 15210000.nvdisplay: blank - powerdown
[  388.838319] PD DISP2 index4 DOWN
[  388.838417] PD DISP1 index3 DOWN
[  388.838502] PD DISP0 index2 DOWN
1462513593.237509
 gpio-252 (                    |vdd-hdmi            ) o[  388.854750] tegradc 15210000.nvdisplay: unblank
ut hi    
 gpio-441 (          [  388.854762] PD DISP0 index2 UP
          |hdmi[  388.855696] PD DISP1 index3 UP
2.0_hpd         ) in  lo    
[  388.855776] PD DISP2 index4 UP
[  388.857234] Parent Clock set for DC plld2
[  388.862497] tegradc 15210000.nvdisplay: hdmi: pclk:594000K, set prod-setting:prod_c_600M
[  388.950198] tegradc 15210000.nvdisplay: unblank
1462513593.344129
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513593.457612
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo    
1462513593.578300
 gpio-252 (                    |vdd-hdmi            ) out hi    
 gpio-441 (                    |hdmi2.0_hpd         ) in  lo

Is the information enough for you?

okotar,

There were once some users whose HDMI monitor always sets wrong hotplug signal and cause plugged/unplugged keeps showing.

Could you prevent using that monitor for any test at this moment? We are using 3~4 kind of 4k monitors on devkit almost everyday but does not see such behavior.

Did you use this monitor in previous test?

WayneWWW,

cause plugged/unplugged keeps showing
The messages don’t “keep” showing.

  1. I plug hdmi and TX2 makes "plugged" message
  2. TX2 makes "unplugged" message while the HDMI is connected
  3. TX2 makes "plugged" message
  4. TX2 keeps outputting HDMI signal without unplugged/plugged messages

We are using 3~4 kind of 4k monitors on devkit almost everyday but does not see such behavior.
Did you use this monitor in previous test?
Yes, I used the monitor in previous test.
Additionally, other two 4k monitors and one FHD monitor I used in previous tests make TX2 outputting such messages.
The messages are shown in these case.
[Case A]

  1. unplug hdmi
  2. wait until the monitor moves into power saving mode
  3. plug hdmi then the messages are shown

[Case B]

  1. plug hdmi
  2. turn off the monitor by power button
  3. turn on the monitor by power button then the messages are shown

[Case C]

  1. plug hdmi
  2. unplug monitor's AC plug
  3. plug it again then the messages are shown

On the other hand, the messages aren’t shown in following case.
[Case D]

  1. unplug hdmi
  2. plug hdmi while the monitor shows a message such as "No Signal"

Another FHD monitor I used in previous tests makes TX2 showing “No EDID change after HPD bounce, taking no action” message in Case A, B, C and sometimes D instead of “unplugged/plugged” messages.

Could you prevent using that monitor for any test at this moment?
OK. I prepared some monitors which doesn’t make TX2 showing “unplugged/plugged” messages.
I’m testing again now with them but I already got the error in some conditions on our carrier board while the test is ongoing.

I’m also letting you know that we can’t ban our users from using monitors which makes TX2 showing “unplugged/plugged” messages.

okotar,

Do those plugged/unplugged case happen on devkit or your carrier board?

Are we all talking about devkit now?

okotar,

I just tried your method with my HDMI monitor but cannot see such error on devkit.

IMO, you should scope the HPD pin on board to check the voltage level.

This plugged/unplugged message is shown because your monitor gives hotplug signal to tegra instead of tegra pull up/down those pin itself.