Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#17314 closed bug (fixed)

My thinkpad x201 has a blackscreen. did work before

Reported by: modeenf Owned by: rudolfc
Priority: normal Milestone: Unscheduled
Component: Drivers/Graphics/intel_extreme/ironlake Version: R1/beta3
Keywords: Cc:
Blocked By: Blocking:
Platform: All

Description

Black screen on latest hrev. Did test hrev55114 and that one worked (giving me a desctop etc).

I will pinpoint the one that brake it.

Attachments (4)

syslog (161.7 KB ) - added by modeenf 3 years ago.
syslog_working_55449 (170.9 KB ) - added by modeenf 3 years ago.
intel_extreme_x64_2021-10-16.zip (71.7 KB ) - added by rudolfc 3 years ago.
Updated PLL limits and updated setmode/proposemode to behave as I think should be as intended. PLL mods partly from DRM i915, partly from own guesses with tests for G45 (all resolutions and all refreshrates now OK there)
syslog.2 (345.9 KB ) - added by modeenf 3 years ago.
hrev55507 with new driver

Download all attachments as: .zip

Change History (33)

comment:1 by bruno, 3 years ago

Would be better with syslog?

in reply to:  1 comment:3 by modeenf, 3 years ago

Replying to bruno:

Would be better with syslog?

That to, Rudolf suggested pinpoint the hrev that broke it.

https://discuss.haiku-os.org/t/improving-the-intel-extreme-driver-was-graphics-on-dell-laptop-in-vesa-mode-only/10583/297?u=modeenf

comment:4 by rudolfc, 3 years ago

ModeenF, yes, please.. Upload a syslog here that shows the intel_extreme driver trying to control the card to start with.. maybe one where it was OK, and one where it failed?

comment:5 by rudolfc, 3 years ago

Owner: set to rudolfc
Status: newassigned

by modeenf, 3 years ago

Attachment: syslog added

by modeenf, 3 years ago

Attachment: syslog_working_55449 added

comment:6 by rudolfc, 3 years ago

Looking at both files it seems the refreshrate is set at 113% when it's working, compared to when it's not working. So maybe if the refresh is 60 when it's OK, it's 53-ish when it's not OK. Strange that this is not the same on both logs. Maybe you could try on the working version: look at the reported refresh in screenprefs there (let me know here) and also test what happens if you lower it by approx this amount: no screen?

EDIT: Hmm,

Your screen reports two 'additional modes' (native):

KERN: Additional Video Mode (1280x800@60Hz): KERN: clock=68.940000 MHz KERN: h: (1280, 1296, 1344, 1408) KERN: v: (800, 801, 804, 816)

KERN: Additional Video Mode (1280x800@49Hz): KERN: clock=60.960000 MHz KERN: h: (1280, 1328, 1360, 1478) KERN: v: (800, 803, 809, 825)

Seems the first one works on your system and is selected in the working log, the second one is selected on the other syslog. the dotclocks are exactly 113% different.

I don't know why another mode is selected, but looks like this is a good pointer to the problem. I'll try to locate it..

Last edited 3 years ago by rudolfc (previous) (diff)

comment:7 by rudolfc, 3 years ago

OK, The trouble is that the 60Hz mode should be selected, but comes later in the generated modelist I think. Since now SetMode calls ProposeMode, which iterates over this list, where before ProposeMode was (incorrectly) not called by SetMode, this problem is introduced.

ProposeMode needs to be expanded to check the refreshrate and with that come up with the really requested (closer) mode. That would solve it, though if all would be perfect, even other modes would be handled correctly.

I have another few questions:

  • What happens if you change refreshrate lower, higher, on the working hrefs?
  • What happens if you change resolution?

Would these changes result in a working screen? Always? Or only some? If so, where are the limits so to speak?

Thanks!

Last edited 3 years ago by rudolfc (previous) (diff)

comment:8 by modeenf, 3 years ago

I didn't test all combination

Working
60 hz, 32 bits 1280*800
60 hz, 16 bits 1280*800
60 hz, 8 bits 1280*800
60 hz, 32 bits 1024*768
60 hz, 32 bits 640*350

Not working (black screen)
70-85 hz, 32 bits 1280*800
didn't test other resolutons. Can do that but I guess it will be the same ;)

Works but with top of the screen dissorted
60 hz, 32 bits 1680*1050 and above

Last edited 3 years ago by modeenf (previous) (diff)

comment:9 by rudolfc, 3 years ago

Thanks! Can you also try below 60 Hz?

comment:10 by modeenf, 3 years ago

That was the lowest I could choose in the dropdown or in the custom view.

comment:11 by rudolfc, 3 years ago

Hmm. No slider in prefs then for the refresh?

comment:12 by modeenf, 3 years ago

When I choose custom the slider shows 60 to 85.

comment:13 by smashIt, 3 years ago

I have the same problem on my Thinkpad T420 (intel HD 3000 GPU) after upgrading to hrev55507 x86_64.

comment:14 by rudolfc, 3 years ago

Hi, I'll update proposemode for this asap and get back to you. Thanks!

comment:15 by rudolfc, 3 years ago

Please try hrev55513, to see what happens. The refreshrate is preserved now in proposemode, which is not yet enough from the looks of it here. Anyhow it should improve the situation already (somewhat).

I'll puzzle a bit more here before I make another commit. Anyhow, I'm curious if you have a picture again..

comment:16 by rudolfc, 3 years ago

OK, got more info now. I expect hrev55513 is a good candidate to give you both your screen back so to speak.

I was testing some hrevs since I saw an unexpected effect on Generation4 (G45) over here: the refreshrate (after the above commit, but also on hrevs before I started working on BWindowScreen, so where proposemode did not yet come into play with setmode) deviates a lot if I set 1280x1024x70Hz: with the old version it sets 76Hz, with the latest commit it's 64Hz. Both about the same error. The reason for the deviation is limits in the PLL hardware so it looks like that can't be helped (easily).

The reason it was 76Hz, and it's now 64Hz, is because via setmode calling proposemode with just visible size check, along with refresh, another modeline is still choosen.

The better way of choosing the modeline would probably be to look at which mode's defaults come closest to the refreshrate setmode wants to set, so I might still look at that, depending on your results. (please let me know)

Of course the PLL hardware restrictions remain, so with either mode there's a big refreshrate deviation. This does not apply for lower modes on G45, tested 640x480, 800x600 and 1024x768 in range 60-75Hz: all OK. 1280x1024 in 60Hz is OK too btw.

I just doublechecked IvyBridge and the deviation does not happen there: more modern card with more options in the PLL's, thankfully.

OK, that's it for now. Hopefully the nightlies will be up soon so you can easily check if it's OK again with hrev55513 or later..

Last edited 3 years ago by rudolfc (previous) (diff)

comment:17 by rudolfc, 3 years ago

Another update: I'll be updating the PLL limits code as well, since it's wrong. I thought it would be stupid the PLL couldn't handle refreshrates better, and I was right. Just removed some limits as a bold test and voila, perfect set refreshrates :-) Anyhow, Going to sync against Intel i915 Linux drm driver for this now and see what happens..

comment:18 by modeenf, 3 years ago

Can't wait to test all the changes. Checks the nightly builds daily. But still stuck at 55507..

comment:19 by rudolfc, 3 years ago

Are you on 32 or 64bit? Maybe I can post the driver here, you'd have to place it in the user unpackaged hierarchy to use it, that seems to work OK again at least in hrev55464 (tested x64 which accepts the user hierarchy for this again)

comment:20 by modeenf, 3 years ago

That would be nice. 64 bits. Yes I know. Even have built my own drivers before but right now my Haiku sourscode are not update.

comment:21 by rudolfc, 3 years ago

Will do. G45 works OK with the i915 PLL limits I just saw. Nice :-) I'll complete this doublecheck/update and compile a driver for you, hopefully within a few hours.

by rudolfc, 3 years ago

Updated PLL limits and updated setmode/proposemode to behave as I think should be as intended. PLL mods partly from DRM i915, partly from own guesses with tests for G45 (all resolutions and all refreshrates now OK there)

comment:22 by rudolfc, 3 years ago

Hi again, please test this version and let me know what happens.. :-) Also upload a syslog if possible..

comment:23 by modeenf, 3 years ago

nice. with the new driver it now works the same as in hrev55449-x86_64. only shows 60-85 hz.

by modeenf, 3 years ago

Attachment: syslog.2 added

hrev55507 with new driver

comment:24 by rudolfc, 3 years ago

Would for instance 1024*768 @ 70 Hz work for you? or is it literally the same as with the list you posted here on the old revs?

At least a difference between then and now should be that BWindowScreen works properly with panning/scrolling support, and so also cloning the accelerant is OK.

comment:25 by rudolfc, 3 years ago

Just built a system with Intel Skylake (Generation 9 gfx), HD 530 (Id 0x1912). I'll probably do a intel_extreme driver test with it to see what happens. At this time the ID is not in the driver, so I'm running 'framebuffer' on Haiku x64. :-)

comment:26 by modeenf, 3 years ago

Nice, 1024*768 @ 70 Hz up to 85hz.

but when setting 1024*768 @ 85 Hz and then tryed 1280*800 @ 85hz the screen went black and stayd black more than those 15 second. So I had to force a reboot but was 1024*768 @ 85hz after the reboot.

Nice have a laptop with both 520 and 620

comment:27 by modeenf, 3 years ago

I thought I hade generation 10 but apparently no generation 10 was released. HD 6xx are generation 9.5 and after that it's generation 11.

So if you need some testing ;)
This is what I have. My systems that has 620, 530 and 520 are not working that great with Haiku, don't know why, can be that I'm only booting through USB..

UHD Graphics 620 (Gen 9.5), Laptop screen, 1 HDMI
HD Graphics 530 (Gen 9), Desktop. 2 DP and 1 VGA, same id as yours
HD Graphics 520 (Gen 9), Laptop screen, 1 DP
HD Graphics 4000 (Gen 7), nuc, only 1 VGA
HD Graphics 4000 (Gen 7), Laptop screen, 1 VGA, 1 HDMI
HD Graphics (Gen 5), Laptop screen, VGA
GMA 3150 (Atom N4xx), Laptop screen, VGA

comment:28 by smashIt, 3 years ago

With hrev55541 it works again. Thanks :)

comment:29 by rudolfc, 3 years ago

Resolution: fixed
Status: assignedclosed

Nice all those systems! And nice it works again for both of you. I'll close this ticket then. @modeenf: if 1024*768 @ 70Hz works for you, you could try my BWindowScreen command line test app to see it indeed works (it sets 1024x768, which is 60Hz via BWindowScreen, then it sets 1024*768 @ 70Hz via BScreen for that class (a trick), which also is a virtual mode. Then it will draw a vertical single yellow line in top mid of your screen, and then it will pan that line with hardware 'acceleration' (pointer updates via X,Y set) smoothly to left and back to right.

This app failed before, now it fully succeeds at the exact same way it did when I wrote it On R5.0.3 and Dan0.

It can be found on my homepage (rudolfs-place.nl): it's in the technical info page at the drivers. It was originally written for the MAtrox driver. So it will initially offer you a lot of other special modes (tv, dualhead stretch: left: yellow line, right: blue line) which will block on all drivers except nvidia and matrox.

For 64bit you need to recompile that app first, it's 32bit.

Thanks for your help with this bug, all!

Last edited 3 years ago by rudolfc (previous) (diff)
Note: See TracTickets for help on using tickets.