Opened 2 months ago

Closed 7 weeks ago

#15662 closed bug (fixed)

intel video driver regression rev53561 -> rev53790

Reported by: hugeping Owned by: pulkomandy
Priority: normal Milestone: R1/beta2
Component: Drivers/Graphics/intel_extreme/ivybridge Version: R1/Development
Keywords: Cc:
Blocked By: Blocking: #15664
Has a Patch: no Platform: All

Description (last modified by diver)

Just updated from rev53561 to rev53790.
After booting have black screen. ctrl-alt-del did reboot. Selecting fail-safe video driver -> worked.
But rev53561 worked fine with accelerated driver...

listdev:
device Display controller (VGA compatible controller, VGA controller) [3|0|0]
  vendor 8086: Intel Corporation
  device 0166: 3rd Gen Core processor Graphics Controller

Attachments (2)

intel_extreme_regression.patch (723 bytes ) - added by hugeping 2 months ago.
intel_extreme.log (512.0 KB ) - added by hugeping 2 months ago.

Download all attachments as: .zip

Change History (14)

comment:1 by diver, 2 months ago

Component: - GeneralDrivers/Graphics/intel_extreme
Description: modified (diff)
Owner: changed from nobody to pulkomandy
Status: newassigned

comment:2 by pulkomandy, 2 months ago

Please attach a syslog. Also, it would be helpful if you could try some intermediate revisions, and try to find the last working/first broken ones.

by hugeping, 2 months ago

by hugeping, 2 months ago

Attachment: intel_extreme.log added

comment:3 by hugeping, 2 months ago

Ok, i have attached log and patch on master that solves problem on my side. Hope, it helps.

comment:4 by ambroff, 2 months ago

I don't understand why yet but I can confirm that reverting 03ee42a8e resolves the issue for my Ivy Bridge laptop as well.

comment:5 by pulkomandy, 2 months ago

Good to know, but I think it's needed for my SandyBridge one to work. I'll see what I can find.

comment:6 by pulkomandy, 2 months ago

Blocking: 15664 added

comment:7 by pulkomandy, 2 months ago

So, here is a short explanation of what this code does:

The intel video hardware has two display "pipes". These are set with the timing and source image for each of the two displays that can be used at the same time (later generations add a 3rd pipe to have 3 independant displays).

The pipes can be freely mapped to the output ports (lvds, dvi, vga, ...). So you can have two displays using the same pipe (and displaying the same thing), or you can have two displays each using a separate pipe.

Previously we would always return INTEL_PIPE_B for the LVDS (internal flat panel) port here. Then, we would try to program the LVDS port to use pipe B. But, it turns out our code to change which display pipe is used doesn't quite work.

So, we would end up in an interesting situation: we would configure pipe B, but let the LVDS display show the output of pipe A, which was set by the VESA driver. Of course this would normally not work very well, however...

Even when configuring pipe B, we did reset some of pipe A registers (the old versions of the driver used to just set both pipes to the same things regardless of connected monitors, hoping that one would be connected to some display, and there were some leftovers of that). We did set just what we needed for pipe A to show the right thing, and left pipe B in a badly configured state (because we couldn't see what we were doing to it, and it seemed to work because pipe A was OK and shown on display).

So, what I did here is read from the "port register" which has a bit telling us which pipe is currently used. And we just tell the driver to reuse that one. This way we can save us all the work of switching the display from one pipe to the other, which we don't do correctly.

So, I would guess that something is wrong on Iron Lake with the way we set up pipe B, and reverting this change gets us back to the initial situation: a broken setup on pipe B, but the display is showing pipe A anyway which was set y VESA so it doesn't really matter. I would review all parts of the modesetting for things that I made sandybridge specific when in fact they should also apply for iron lake (so check for Generation >= 6 or so, and verify the Iron Lake intel specs to see if it should instead be >= 5 ; check places where the PCH versions are not handled the same, etc).

comment:8 by pulkomandy, 2 months ago

Component: Drivers/Graphics/intel_extremeDrivers/Graphics/intel_extreme/ivybridge
Milestone: UnscheduledR1/beta2

comment:9 by pulkomandy, 8 weeks ago

See my comment in https://dev.haiku-os.org/ticket/15661#comment:16, it looks like your computer also uses Panther Point and simple changes I suggested there will fix the issue.

comment:10 by pulkomandy, 8 weeks ago

Please test hrev53857, issue should be fixed there.

in reply to:  10 comment:11 by hugeping, 7 weeks ago

Replying to pulkomandy:

Please test hrev53857, issue should be fixed there.

Works fine!

comment:12 by pulkomandy, 7 weeks ago

Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.