Dasharo / dasharo-issues

The Dasharo issue tracker
https://dasharo.com/
24 stars 0 forks source link

No signal from DisplayPort from iGPU before OS on Optiplex 7010 #465

Open mkopec opened 1 year ago

mkopec commented 1 year ago

Dasharo version

Dasharo (coreboot+UEFI) v0.2.0

Affected component(s) or functionality

DisplayPort ports before the OS has booted (Splash screen, setup menu)

Brief summary

The DisplayPort ports do not output any signal before the OS has booted, making it difficult to configure the boot options if one doesn't have a VGA monitor available.

How reproducible

100%

How to reproduce

Steps to reproduce the behavior:

  1. Connect DisplayPort monitor to the DP outputs on the rear I/O
  2. Power the machine on

Expected behavior

Splash screen, setup menu, boot menu are visible on the monitor,

Actual behavior

Nothing is visible until an OS with GPU drivers has booted.

Screenshots

n/a

Additional context

A workaround is to use the serial port on the rear to access the setup menu.

Solutions you've tried

Both DP ports exhibit the same issue.

miczyg1 commented 1 year ago

@mkopec it can be monitor dependent. Some monitors take so much time to wake up that libgfxinit is not handling it. Is even the framebuffer produced by libgfxinit?

mkopec commented 1 year ago

@miczyg1 I've tested with a couple of Dell U2414H's at the office and my personal iiyama GB3461WQSU-B1, same thing. Will take a look after work today to check what libgfxinit says

mkopec commented 1 year ago

@miczyg1 here's a log from libgfxinit:

[2.336442] CONFIG =>
[2.338348]   (Primary   =>
[2.340773]      (Port => DP2     ,
[2.343889]       Framebuffer =>
[2.346747]         (Width     => 2560,
[2.350210]          Height    => 1440,
[2.353674]          Start_X   => 0,
[2.356880]          Start_Y   => 0,
[2.360084]          Stride    => 2560,
[2.363548]          V_Stride  => 1440,
[2.367013]          Tiling    => Linear ,
[2.370737]          Rotation  => No_Rotation,
[2.374806]          Offset => 0x00000000,
[2.378532]          BPC    => 8),
[2.381563]       Mode =>
[2.383814]         (Dotclock           => 438540000,
[2.388490]          H_Visible          => 3440,
[2.392733]          H_Sync_Begin       => 3584,
[2.396976]          H_Sync_End         => 3680,
[2.401219]          H_Total            => 3880,
[2.405464]          V_Visible          => 1440,
[2.409708]          V_Sync_Begin       => 1478,
[2.413952]          V_Sync_End         => 1482,
[2.418196]          V_Total            => 1506,
[2.422440]          H_Sync_Active_High => True,
[2.426684]          V_Sync_Active_High => False,
[2.431017]          BPC                => 10)),
[2.435262]    Secondary =>
[2.437687]      (Port => Disabled,
[2.440806]       Framebuffer =>
[2.443665]         (Width     => 1,
[2.446869]          Height    => 1,
[2.450073]          Start_X   => 0,
[2.453278]          Start_Y   => 0,
[2.456483]          Stride    => 1,
[2.459688]          V_Stride  => 1,
[2.462891]          Tiling    => Linear ,
[2.466615]          Rotation  => No_Rotation,
[2.470686]          Offset => 0x00000000,
[2.474410]          BPC    => 8),
[2.477442]       Mode =>
[2.479693]         (Dotclock           => 1000000,
[2.484196]          H_Visible          => 1,
[2.488179]          H_Sync_Begin       => 1,
[2.492163]          H_Sync_End         => 1,
[2.496147]          H_Total            => 1,
[2.500131]          V_Visible          => 1,
[2.504114]          V_Sync_Begin       => 1,
[2.508098]          V_Sync_End         => 1,
[2.512081]          V_Total            => 1,
[2.516066]          H_Sync_Active_High => False,
[2.520396]          V_Sync_Active_High => False,
[2.524727]          BPC                => 5)),
[2.528885]    Tertiary  =>
[2.531309]      (Port => Disabled,
[2.534427]       Framebuffer =>
[2.537285]         (Width     => 1,
[2.540489]          Height    => 1,
[2.543693]          Start_X   => 0,
[2.546896]          Start_Y   => 0,
[2.550101]          Stride    => 1,
[2.553304]          V_Stride  => 1,
[2.556508]          Tiling    => Linear ,
[2.560233]          Rotation  => No_Rotation,
[2.564304]          Offset => 0x00000000,
[2.568028]          BPC    => 8),
[2.571060]       Mode =>
[2.573311]         (Dotclock           => 1000000,
[2.577814]          H_Visible          => 1,
[2.581798]          H_Sync_Begin       => 1,
[2.585782]          H_Sync_End         => 1,
[2.589764]          H_Total            => 1,
[2.593748]          V_Visible          => 1,
[2.597733]          V_Sync_Begin       => 1,
[2.601717]          V_Sync_End         => 1,
[2.605701]          V_Total            => 1,
[2.609684]          H_Sync_Active_High => False,
[2.614014]          V_Sync_Active_High => False,
[2.618345]          BPC                => 5)));
mkopec commented 1 year ago

And here's an excerpt from EDK2 logs:

GraphicsConsole video resolution 3440 x 1440
Graphics - Mode 0, Column = 80, Row = 25
Graphics - Mode 1, Column = 80, Row = 50
Graphics - Mode 2, Column = 100, Row = 31
Graphics - Mode 3, Column = 128, Row = 40
Graphics - Mode 4, Column = 160, Row = 42
Graphics - Mode 5, Column = 240, Row = 56
Graphics - Mode 6, Column = 430, Row = 75
Graphics Console Started, Mode: 6
miczyg1 commented 1 year ago

So DP2 looks like detected, framebuffer was created in coreboot tables, because EDK2 initialized the graphics. But for some reason, it doesn't work. Hmm...

Does edk2 log has something like this?

[GraphicsOutputDxe]: GraphicsDeviceInfo HOB doesn't exist!
[GraphicsOutputDxe]: BAR[0]: Base = 81000000, Length = 1000000
[GraphicsOutputDxe]: BAR[1]: Base = 90000000, Length = 10000000
[GraphicsOutputDxe]: ... matched!
mkopec commented 1 year ago

@miczyg1 Yes, I get these messages:

[GraphicsOutputDxe]: GraphicsDeviceInfo HOB doesn't exist!
[GraphicsOutputDxe]: BAR[0]: Base = 88C00000, Length = 400000
[GraphicsOutputDxe]: BAR[1]: Base = 90000000, Length = 10000000
[GraphicsOutputDxe]: ... matched!

Here's a complete boot log from power on to EFI shell:

https://gist.github.com/mkopec/78fe243bc1ca258c841b67114f262c13