Skip to contentSkip to conversation

drm/i915: Fix 830M/ns2501 for real, well almost

PATCH In review [email protected] 9 participants 70 messages Jun 5, 2014 – Oct 24, 2014 6 messages not in the archive

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

cover drm/i915: Fix 830M/ns2501 for real, well almost

From: Ville Syrjälä <[email protected]>

Since the 830M dragon popped up again, I figured I'd dig out my old patches that try to fix it.

I ended up reworking the primary plane code a bit also to eliminate the DSPCNTR/DSPADDR RMW accesses since those are dangerous on 830M. But I think the end result is more in line where we want to go anyway with the primary planes anyway.

This has been tested on my Lifebook S6010 and this is the first time two displays work reliably on this thing. Additionally we still need the minimum watermark fix, for now I just used a hack (didn't include it here). The only thing that doesn't work is suspend to ram. It suspends but won't wake up, but that happens w/o i915 also so I can't take the blame for that.

I pushed the lot to [1] and the watermark hack is included there as well.

[1] git://gitorious.org/vsyrjala/linux.git alm_fixes4

Ville Syrjälä (15):
drm/i915: Use named initializers for gmch wm params drm/i915: Fix gen2 planes B and C max watermark value drm/i915: Don't get hw state from DVO chip unless DVO is enabled drm/i915: ns2501 is on DVOB
drm/i915: Enable DVO between mode_set and dpms hooks drm/i915: Don't call DVO mode_set hook on DPMS changes drm/i915: Kill useless ns2501_dump_regs
drm/i915: Rewrite ns2501 driver a bit
drm/i915: Ignore VBT int_crt_support on 830M drm/i915: Fix DVO 2x clock enable on 830M
Revert "drm/i915: Nuke pipe A quirk on i830M" drm/i915: Add pipe B force quirk for 830M
drm/i915: Eliminate rmw from .update_primary_plane() drm/i915: Call .update_primary_plane in
intel_{enable,disable}_primary_hw_plane()
drm/i915: Check pixel clock in ns2501 mode_valid hook

 drivers/gpu/drm/i915/dvo_ns2501.c    | 552 +++++++++++++++++++++--------------
 drivers/gpu/drm/i915/i915_drv.h      |   4 +
 drivers/gpu/drm/i915/intel_display.c | 310 ++++++++++----------
 drivers/gpu/drm/i915/intel_dvo.c     |  19 +-
 drivers/gpu/drm/i915/intel_pm.c      | 154 +++++-----
 5 files changed, 580 insertions(+), 459 deletions(-)
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#1 lore raw

PATCH 1/15 drm/i915: Use named initializers for gmch wm params

From: Ville Syrjälä <[email protected]>

Using names initializers when filling out the watermark structs saves you from having go look up the struct definition every single time.

---
 drivers/gpu/drm/i915/intel_pm.c | 130 ++++++++++++++++++++--------------------
 1 file changed, 65 insertions(+), 65 deletions(-)
drivers/gpu/drm/i915/intel_pm.c +65 -65
index ee27d74..f83d1ff 100644
@@ -865,95 +865,95 @@ static int i845_get_fifo_size(struct drm_device *dev, int plane)
 
 /* Pineview has different values for various configs */
 static const struct intel_watermark_params pineview_display_wm = {
-	PINEVIEW_DISPLAY_FIFO,
-	PINEVIEW_MAX_WM,
-	PINEVIEW_DFT_WM,
-	PINEVIEW_GUARD_WM,
-	PINEVIEW_FIFO_LINE_SIZE
+	.fifo_size = PINEVIEW_DISPLAY_FIFO,
+	.max_wm = PINEVIEW_MAX_WM,
+	.default_wm = PINEVIEW_DFT_WM,
+	.guard_size = PINEVIEW_GUARD_WM,
+	.cacheline_size = PINEVIEW_FIFO_LINE_SIZE,
 };
 static const struct intel_watermark_params pineview_display_hplloff_wm = {
-	PINEVIEW_DISPLAY_FIFO,
-	PINEVIEW_MAX_WM,
-	PINEVIEW_DFT_HPLLOFF_WM,
-	PINEVIEW_GUARD_WM,
-	PINEVIEW_FIFO_LINE_SIZE
+	.fifo_size = PINEVIEW_DISPLAY_FIFO,
+	.max_wm = PINEVIEW_MAX_WM,
+	.default_wm = PINEVIEW_DFT_HPLLOFF_WM,
+	.guard_size = PINEVIEW_GUARD_WM,
+	.cacheline_size = PINEVIEW_FIFO_LINE_SIZE,
 };
 static const struct intel_watermark_params pineview_cursor_wm = {
-	PINEVIEW_CURSOR_FIFO,
-	PINEVIEW_CURSOR_MAX_WM,
-	PINEVIEW_CURSOR_DFT_WM,
-	PINEVIEW_CURSOR_GUARD_WM,
-	PINEVIEW_FIFO_LINE_SIZE,
+	.fifo_size = PINEVIEW_CURSOR_FIFO,
+	.max_wm = PINEVIEW_CURSOR_MAX_WM,
+	.default_wm = PINEVIEW_CURSOR_DFT_WM,
+	.guard_size = PINEVIEW_CURSOR_GUARD_WM,
+	.cacheline_size = PINEVIEW_FIFO_LINE_SIZE,
 };
 static const struct intel_watermark_params pineview_cursor_hplloff_wm = {
-	PINEVIEW_CURSOR_FIFO,
-	PINEVIEW_CURSOR_MAX_WM,
-	PINEVIEW_CURSOR_DFT_WM,
-	PINEVIEW_CURSOR_GUARD_WM,
-	PINEVIEW_FIFO_LINE_SIZE
+	.fifo_size = PINEVIEW_CURSOR_FIFO,
+	.max_wm = PINEVIEW_CURSOR_MAX_WM,
+	.default_wm = PINEVIEW_CURSOR_DFT_WM,
+	.guard_size = PINEVIEW_CURSOR_GUARD_WM,
+	.cacheline_size = PINEVIEW_FIFO_LINE_SIZE,
 };
 static const struct intel_watermark_params g4x_wm_info = {
-	G4X_FIFO_SIZE,
-	G4X_MAX_WM,
-	G4X_MAX_WM,
-	2,
-	G4X_FIFO_LINE_SIZE,
+	.fifo_size = G4X_FIFO_SIZE,
+	.max_wm = G4X_MAX_WM,
+	.default_wm = G4X_MAX_WM,
+	.guard_size = 2,
+	.cacheline_size = G4X_FIFO_LINE_SIZE,
 };
 static const struct intel_watermark_params g4x_cursor_wm_info = {
-	I965_CURSOR_FIFO,
-	I965_CURSOR_MAX_WM,
-	I965_CURSOR_DFT_WM,
-	2,
-	G4X_FIFO_LINE_SIZE,
+	.fifo_size = I965_CURSOR_FIFO,
+	.max_wm = I965_CURSOR_MAX_WM,
+	.default_wm = I965_CURSOR_DFT_WM,
+	.guard_size = 2,
+	.cacheline_size = G4X_FIFO_LINE_SIZE,
 };
 static const struct intel_watermark_params valleyview_wm_info = {
-	VALLEYVIEW_FIFO_SIZE,
-	VALLEYVIEW_MAX_WM,
-	VALLEYVIEW_MAX_WM,
-	2,
-	G4X_FIFO_LINE_SIZE,
+	.fifo_size = VALLEYVIEW_FIFO_SIZE,
+	.max_wm = VALLEYVIEW_MAX_WM,
+	.default_wm = VALLEYVIEW_MAX_WM,
+	.guard_size = 2,
+	.cacheline_size = G4X_FIFO_LINE_SIZE,
 };
 static const struct intel_watermark_params valleyview_cursor_wm_info = {
-	I965_CURSOR_FIFO,
-	VALLEYVIEW_CURSOR_MAX_WM,
-	I965_CURSOR_DFT_WM,
-	2,
-	G4X_FIFO_LINE_SIZE,
+	.fifo_size = I965_CURSOR_FIFO,
+	.max_wm = VALLEYVIEW_CURSOR_MAX_WM,
+	.default_wm = I965_CURSOR_DFT_WM,
+	.guard_size = 2,
+	.cacheline_size = G4X_FIFO_LINE_SIZE,
 };
 static const struct intel_watermark_params i965_cursor_wm_info = {
-	I965_CURSOR_FIFO,
-	I965_CURSOR_MAX_WM,
-	I965_CURSOR_DFT_WM,
-	2,
-	I915_FIFO_LINE_SIZE,
+	.fifo_size = I965_CURSOR_FIFO,
+	.max_wm = I965_CURSOR_MAX_WM,
+	.default_wm = I965_CURSOR_DFT_WM,
+	.guard_size = 2,
+	.cacheline_size = I915_FIFO_LINE_SIZE,
 };
 static const struct intel_watermark_params i945_wm_info = {
-	I945_FIFO_SIZE,
-	I915_MAX_WM,
-	1,
-	2,
-	I915_FIFO_LINE_SIZE
+	.fifo_size = I945_FIFO_SIZE,
+	.max_wm = I915_MAX_WM,
+	.default_wm = 1,
+	.guard_size = 2,
+	.cacheline_size = I915_FIFO_LINE_SIZE,
 };
 static const struct intel_watermark_params i915_wm_info = {
-	I915_FIFO_SIZE,
-	I915_MAX_WM,
-	1,
-	2,
-	I915_FIFO_LINE_SIZE
+	.fifo_size = I915_FIFO_SIZE,
+	.max_wm = I915_MAX_WM,
+	.default_wm = 1,
+	.guard_size = 2,
+	.cacheline_size = I915_FIFO_LINE_SIZE,
 };
 static const struct intel_watermark_params i830_wm_info = {
-	I855GM_FIFO_SIZE,
-	I915_MAX_WM,
-	1,
-	2,
-	I830_FIFO_LINE_SIZE
+	.fifo_size = I855GM_FIFO_SIZE,
+	.max_wm = I915_MAX_WM,
+	.default_wm = 1,
+	.guard_size = 2,
+	.cacheline_size = I830_FIFO_LINE_SIZE,
 };
 static const struct intel_watermark_params i845_wm_info = {
-	I830_FIFO_SIZE,
-	I915_MAX_WM,
-	1,
-	2,
-	I830_FIFO_LINE_SIZE
+	.fifo_size = I830_FIFO_SIZE,
+	.max_wm = I915_MAX_WM,
+	.default_wm = 1,
+	.guard_size = 2,
+	.cacheline_size = I830_FIFO_LINE_SIZE,
 };
 
 /**
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Reviewed-by on v1 1/15
#2 lore raw

Re: [PATCH 01/15] drm/i915: Use named initializers for gmch wm params

Quoted 7 lines · On Thu, Jun 05, 2014 at 07:15:50PM +0300, [email protected] wrote:

From: Ville Syrjälä <[email protected]>

Using names initializers when filling out the watermark structs saves you from having go look up the struct definition every single time.

Thank you,

-Chris

Signature · 1 line
Chris Wilson, Intel Open Source Technology Centre
#3 lore raw

Re: [PATCH 01/15] drm/i915: Use named initializers for gmch wm params

Am 05.06.2014 22:43, schrieb Chris Wilson:

Quoted 11 lines · On Thu, Jun 05, 2014 at 07:15:50PM +0300, [email protected] wrote:
Quoted 7 lines

From: Ville Syrjälä<[email protected]>

Using names initializers when filling out the watermark structs saves you from having go look up the struct definition every single time.

Thank you,

Thanks for the patch and for all the work, unfortunately it does not quite work as presented. I applied the patch correctly to drm-intel-nightly, and it compiles fine.

However, the following issues exist:

*) If you boot with the kernel parameter vga=792 (i.e. the same console resolutions as initiated by KMS) the system just hangs with a black screen. Booting aborts, nothing happens.

*) Watermark settings are *still* not correct. *SIGH*, *sigh*

intel_reg_read 0x20d8
0x20D8 : 0x11F0104

This is a watermark level of 4. As I said multiple times, the watermark register needs to be *AT LEAST* eight (in numbers, 8) to have a stable display. It is stable between 8 and 32.

To reproduce, use a panning display with xrandr:

xrandr --output DVI1 --mode 1024x768 --panning 2048x1536

then scroll, and see the display flicker.

Folks, I really appreciate all your effort, but I would be really happy if my comments on the wrong watermarks wouldn't be continuously ignored. I submitted patches, twice, thrice... all went into the trash.

Greetings,
Thomas

#4 lore raw

Bug reports on 830MG patches (thanks, but more trouble)

In reply to Chris Wilson

Update on the 830MG Updates:

As Ville already said, resume from "suspend-to-ram" is broken. No surprise, old broken bios. However, there is a big difference between the kernel with the pipe-A quirk disabled, and the one with pipe-a and pipe-b quirks enabled: If resumed without the quirk, the display is dead, but you can at least re-initiate it with vbetool post, then restart the X server. So at least, the kernel is working.

With the pipe A quirk enabled, something dies immediately when attempting to resume from suspend. The machine is completely unresponsive, also not reachable over the network. The kernel dies away. This is *probably* related to the dying kernel when booting with vga=792 (or vga=791 or vga=790, all cause the same problem, no working machine.)

----

Thanks for the patch and for all the work, unfortunately it does not quite work as presented. I applied the patch correctly to drm-intel-nightly, and it compiles fine.

However, the following issues exist:

*) If you boot with the kernel parameter vga=792 (i.e. the same console resolutions as initiated by KMS) the system just hangs with a black screen. Booting aborts, nothing happens.

*) Watermark settings are *still* not correct. *SIGH*, *sigh*

intel_reg_read 0x20d8
0x20D8 : 0x11F0104

This is a watermark level of 4. As I said multiple times, the watermark register needs to be *AT LEAST* eight (in numbers, 8) to have a stable display. It is stable between 8 and 32.

To reproduce, use a panning display with xrandr:

xrandr --output DVI1 --mode 1024x768 --panning 2048x1536

then scroll, and see the display flicker.

Folks, I really appreciate all your effort, but I would be really happy if my comments on the wrong watermarks wouldn't be continuously ignored. I submitted patches, twice, thrice... all went into the trash.

Greetings,
Thomas

#5 lore raw

Re: Bug reports on 830MG patches (thanks, but more trouble)

Quoted 9 lines · Thomas Richter

Update on the 830MG Updates:

As Ville already said, resume from "suspend-to-ram" is broken. No surprise, old broken bios. However, there is a big difference between the kernel with the pipe-A quirk disabled, and the one with pipe-a and pipe-b quirks enabled: If resumed without the quirk, the display is dead, but you can at least re-initiate it with vbetool post, then restart the X server. So at least, the kernel is working.

Quoted 3 lines

With the pipe A quirk enabled, something dies immediately when attempting to resume from suspend. The machine is completely unresponsive, also not reachable over the network. The kernel dies away.

For me resume gets stuck even w/o i915. So something is different clearly between our machines. Might be some driver, or might the BIOS. Do you have the latest BIOS on that thing?

Quoted 2 lines

This is *probably* related to the dying kernel when booting with vga=792 (or vga=791 or vga=790, all cause the same problem, no working machine.)

I must admit I didn't try the vga= options. I'll give them a go and see what happens.

Quoted 6 lines

----

Thanks for the patch and for all the work, unfortunately it does not quite work as presented. I applied the patch correctly to drm-intel-nightly, and it compiles fine.

You applied all 15 patches, right?

Quoted 11 lines

However, the following issues exist:

*) If you boot with the kernel parameter vga=792 (i.e. the same console resolutions as initiated by KMS) the system just hangs with a black screen. Booting aborts, nothing happens.

*) Watermark settings are *still* not correct. *SIGH*, *sigh*

intel_reg_read 0x20d8
0x20D8 : 0x11F0104

I did warn you. If you'd just taken my branch you would have gotten the hack to avoid that.

Quoted 17 lines

This is a watermark level of 4. As I said multiple times, the watermark register needs to be *AT LEAST* eight (in numbers, 8) to have a stable display. It is stable between 8 and 32.

To reproduce, use a panning display with xrandr:

xrandr --output DVI1 --mode 1024x768 --panning 2048x1536

then scroll, and see the display flicker.

Folks, I really appreciate all your effort, but I would be really happy if my comments on the wrong watermarks wouldn't be continuously ignored. I submitted patches, twice, thrice... all went into the trash.

Greetings,
Thomas

Signature · 2 lines
Ville Syrjälä
Intel OTC
#6 lore raw

Re: Bug reports on 830MG patches (thanks, but more trouble)

Hi Ville, hi others,

Quoted 7 lines
Quoted 7 lines

As Ville already said, resume from "suspend-to-ram" is broken. No surprise, old broken bios. However, there is a big difference between the kernel with the pipe-A quirk disabled, and the one with pipe-a and pipe-b quirks enabled: If resumed without the quirk, the display is dead, but you can at least re-initiate it with vbetool post, then restart the X server. So at least, the kernel is working.

Quoted 7 lines
Quoted 3 lines

With the pipe A quirk enabled, something dies immediately when attempting to resume from suspend. The machine is completely unresponsive, also not reachable over the network. The kernel dies away.

For me resume gets stuck even w/o i915. So something is different clearly between our machines. Might be some driver, or might the BIOS. Do you have the latest BIOS on that thing?

Yup, I flashed the bios last week with version 1.07, the latest I could find on the Fujitsu pages. It was 1.06 before, though I did not observe any difference between 1.06 and 1.07 with respect to the broken resume operation.

There is a difference between "freeze" and "freeze". Yes, w/o the pipe-A quirk, the screen goes black, but you can reach it over the network, and you can even type into the console and submit the video restart from there. So, it's not frozen, only the display is "off", though it looks the same for the untrained eye.

Maybe the bios configuration between yours and mine is different?

Quoted 5 lines
Quoted 2 lines

This is *probably* related to the dying kernel when booting with vga=792 (or vga=791 or vga=790, all cause the same problem, no working machine.)

I must admit I didn't try the vga= options. I'll give them a go and see what happens.

Please do. I have narrowed it down to the case where text mode vs. graphics mode makes a difference. That is, a frame buffer console alone is sufficient for the machine to get stuck when loading i915.

Quoted 7 lines
Quoted 5 lines

----

Thanks for the patch and for all the work, unfortunately it does not quite work as presented. I applied the patch correctly to drm-intel-nightly, and it compiles fine.

You applied all 15 patches, right?

Exactly, all 15 of them.

Quoted 7 lines
Quoted 7 lines

However, the following issues exist:

*) If you boot with the kernel parameter vga=792 (i.e. the same console resolutions as initiated by KMS) the system just hangs with a black screen. Booting aborts, nothing happens.

Quoted 7 lines
Quoted 4 lines

*) Watermark settings are *still* not correct. *SIGH*, *sigh*

intel_reg_read 0x20d8
0x20D8 : 0x11F0104

I did warn you. If you'd just taken my branch you would have gotten the hack to avoid that.

Ok, I'll try tonite to clone from your repository instead of intel-drm-nightly and report back. But if you have a patch concerning the watermark that works and is *accepted* into intel-drm-next, I would be thankful indeed. This is really annoying...

(It's not that it is hard to work around the watermark issue....)

So long,
Thomas

#7 lore raw

Re: Bug reports on 830MG patches (thanks, but more trouble)

Quoted 13 lines · Thomas Richter

Hi Ville, hi others,

Quoted 11 lines
Quoted 10 lines

As Ville already said, resume from "suspend-to-ram" is broken. No surprise, old broken bios. However, there is a big difference between the kernel with the pipe-A quirk disabled, and the one with pipe-a and pipe-b quirks enabled: If resumed without the quirk, the display is dead, but you can at least re-initiate it with vbetool post, then restart the X server. So at least, the kernel is working.

With the pipe A quirk enabled, something dies immediately when attempting to resume from suspend. The machine is completely unresponsive, also not reachable over the network. The kernel dies away.

Quoted 8 lines
Quoted 3 lines

For me resume gets stuck even w/o i915. So something is different clearly between our machines. Might be some driver, or might the BIOS. Do you have the latest BIOS on that thing?

Yup, I flashed the bios last week with version 1.07, the latest I could find on the Fujitsu pages. It was 1.06 before, though I did not observe any difference between 1.06 and 1.07 with respect to the broken resume operation.

1.07 is what have as well.

Quoted 6 lines

There is a difference between "freeze" and "freeze". Yes, w/o the pipe-A quirk, the screen goes black, but you can reach it over the network, and you can even type into the console and submit the video restart from there. So, it's not frozen, only the display is "off", though it looks the same for the untrained eye.

My eye is well trained, sir.

Quoted 2 lines

Maybe the bios configuration between yours and mine is different?

I tried disabling everything extra from the BIOS. No dice.

Quoted 10 lines
Quoted 6 lines
Quoted 3 lines

This is *probably* related to the dying kernel when booting with vga=792 (or vga=791 or vga=790, all cause the same problem, no working machine.)

I must admit I didn't try the vga= options. I'll give them a go and see what happens.

Please do. I have narrowed it down to the case where text mode vs. graphics mode makes a difference. That is, a frame buffer console alone is sufficient for the machine to get stuck when loading i915.

OK, so I posted a few revised patches, and three new ones. With these my S6010 can resume from S3 if and only if:
1. pass acpi_sleep=s3_bios to the kernel command line
2. unload i915 before suspending

1. I guess is expected since you also had to use vbetool to post the GPU. Having the kernel do it is better since then you can't clobber the state while i915 is already doing stuff.

2. is more strange. I assume there must be some magic difference between our suspend vs. unload and/or resume vs. init codepaths that cause problems. Although the fact that you don't need to do it makes it even stranger. I tried to use the pm_trace facility a bit bit didn't really get anywhere. So given that this thing is a dinosaur I think I'll now leave it and either let someone else figure it out or come back to it when I'm really bored. Otherwise the machine works pretty decently for me now.

I think the reason why killing the pipe A quirk might have made a difference for you was the fact that i915 no longer registered the VGA port and so the DVO port always stayed assigned to pipe A. But if you'd just applied the "ignore VBT" patch and gotten the VGA port back, things would have failed again rather nicely especially when trying to use both pipes.

I pushed the new patches to [1] and I still included the watermark hack, and there's an additional locking fix you'll want as well.

[1] git://gitorious.org/vsyrjala/linux.git alm_fixes5

So apart from the remaining S3 resume mystery the minimum watermark problem is still to be solved. I think Chris's idea of converting the .default_wm parameter to a minimum watermark level is sane. But in order to do that I think we should do these things:
- s/.default_wm/.min_wm/
- Replace the current .default_wm values with "burst size" (maybe with +1) Some of the current .default_wm values make absolutely no sense as a minimum value (pnv at least has 0x3f there!)
- Someone should maybe figure out why we use a larger burst size on 845/865 than on the other platforms

Signature · 2 lines
Ville Syrjälä
Intel OTC
#8 lore raw

Re: Bug reports on 830MG patches (thanks, but more trouble)

Am 06.06.2014 22:08, schrieb Ville Syrjälä:

Quoted 6 lines
Quoted 4 lines

Yup, I flashed the bios last week with version 1.07, the latest I could find on the Fujitsu pages. It was 1.06 before, though I did not observe any difference between 1.06 and 1.07 with respect to the broken resume operation.

1.07 is what have as well.

Ok, great.

Quoted 3 lines
Quoted 1 line

Maybe the bios configuration between yours and mine is different?

I tried disabling everything extra from the BIOS. No dice.

As said, only with the pipe a quirk removed... I had "plug & play os" enabled, and the "security screen on resume" disabled.

Quoted 4 lines

OK, so I posted a few revised patches, and three new ones. With these my S6010 can resume from S3 if and only if:
1. pass acpi_sleep=s3_bios to the kernel command line
2. unload i915 before suspending

This is as good as I had it without the pipe A quirk as well. Unloading i915 worked as well: I had to post the GPU, then either reload i915 or restart X.

Quoted 3 lines

1. I guess is expected since you also had to use vbetool to post the GPU. Having the kernel do it is better since then you can't clobber the state while i915 is already doing stuff.

Yes.

Quoted 2 lines

2. is more strange. I assume there must be some magic difference between our suspend vs. unload and/or resume vs. init codepaths that cause problems.

Likely.

Quoted 1 line

Although the fact that you don't need to do it makes it even stranger.

Not exactly, see above. Reloading i915 works as well, but otherwise you had to stop X, then restart X, then re-set the resolution to ensure that everything is configured correctly.

Quoted 3 lines

I tried to use the pm_trace facility a bit bit didn't really get anywhere. So given that this thing is a dinosaur I think I'll now leave it and either let someone else figure it out or come back to it when I'm really bored.

resume from suspend is not really much an issue. suspend to disk works fine, and there is likely a bios problem.

Did you notice that intel_reg_snapshot just dies when you try? Also, if you check the bootlogs, some I/O regions seem to overlay. Probably resume tries to reload the same I/O addresses intel_reg_snapshot tries to save? vbetool vbestate save also hangs the machine...

Quoted 1 line

Otherwise the machine works pretty decently for me now.

Yes, with the watermark settings in place - from your repository - everything is as good as it gets.

Could you please create a patch for intel_calculate_wm() that adjusts wm_size, probably depending on GEN2?

Quoted 11 lines

I think the reason why killing the pipe A quirk might have made a difference for you was the fact that i915 no longer registered the VGA port and so the DVO port always stayed assigned to pipe A. But if you'd just applied the "ignore VBT" patch and gotten the VGA port back, things would have failed again rather nicely especially when trying to use both pipes.

I pushed the new patches to [1] and I still included the watermark hack, and there's an additional locking fix you'll want as well.

[1] git://gitorious.org/vsyrjala/linux.git alm_fixes5

That is what I pulled probably two hours ago. It still has the issue with dying with vga=792 as boot parameter. When did you submit?

Quoted 10 lines

So apart from the remaining S3 resume mystery the minimum watermark problem is still to be solved. I think Chris's idea of converting the .default_wm parameter to a minimum watermark level is sane. But in order to do that I think we should do these things:
- s/.default_wm/.min_wm/
- Replace the current .default_wm values with "burst size" (maybe with +1) Some of the current .default_wm values make absolutely no sense as a minimum value (pnv at least has 0x3f there!)
- Someone should maybe figure out why we use a larger burst size on 845/865 than on the other platforms

I guess I do have a couple of additional intel based machines here if that is of help. A 945 based board is here, and some later machines.

Thanks!

Greetings,
Thomas

#9 lore raw

Re: Bug reports on 830MG patches (thanks, but more trouble)

Quoted 7 lines · Thomas Richter

Am 06.06.2014 22:08, schrieb Ville Syrjälä:

Quoted 3 lines
Quoted 1 line

Maybe the bios configuration between yours and mine is different?

I tried disabling everything extra from the BIOS. No dice.

As said, only with the pipe a quirk removed... I had "plug & play os" enabled, and the "security screen on resume" disabled.

Hmm. I don't think I tried the pnp os option. I'll give it a go next week in case it has some effect.

Quoted 9 lines
Quoted 5 lines

OK, so I posted a few revised patches, and three new ones. With these my S6010 can resume from S3 if and only if:
1. pass acpi_sleep=s3_bios to the kernel command line
2. unload i915 before suspending

This is as good as I had it without the pipe A quirk as well. Unloading i915 worked as well: I had to post the GPU, then either reload i915 or restart X.

Just restarting X has some risk in case the vbetool POST clobbered some state that i915 only sets up at init or resume.

Quoted 1 line

Did you notice that intel_reg_snapshot just dies when you try?

No, in fact never tried that tool.

Quoted 9 lines

Also, if
you check the bootlogs, some I/O regions seem to overlay. Probably resume tries to reload the same I/O addresses intel_reg_snapshot tries to save? vbetool vbestate save also hangs the machine...

Quoted 1 line

Otherwise the machine works pretty decently for me now.

Yes, with the watermark settings in place - from your repository - everything is as good as it gets.

Oh, great.

Quoted 3 lines

Could you please create a patch for intel_calculate_wm() that adjusts wm_size, probably depending on GEN2?

Daniel was threatening to resurrect his watermark branch. But I don't really see a problem with going with a temporary fix in the meantime maybe even only for 830.

Quoted 7 lines
Quoted 7 lines

I think the reason why killing the pipe A quirk might have made a difference for you was the fact that i915 no longer registered the VGA port and so the DVO port always stayed assigned to pipe A. But if you'd just applied the "ignore VBT" patch and gotten the VGA port back, things would have failed again rather nicely especially when trying to use both pipes.

Quoted 7 lines
Quoted 4 lines

I pushed the new patches to [1] and I still included the watermark hack, and there's an additional locking fix you'll want as well.

[1] git://gitorious.org/vsyrjala/linux.git alm_fixes5

That is what I pulled probably two hours ago. It still has the issue with dying with vga=792 as boot parameter. When did you submit?

I pushed just before sending the email. I think what you have is alm_fixes4, which indeed did blow up with vga= for me as well. alm_fixes5 should fare better.

Signature · 2 lines
Ville Syrjälä
Intel OTC
#10 lore raw

PATCH 1/1 Check for a min level when computing the watermark.

In reply to Ville Syrjälä

Dear intel experts,

the attached patch is a minimally invasive modification of the watermark computation for the 830GM chipset graphics. It adds a minimum watermark level to test against. The minimum value is zero for all other families of the intel chipset graphics, thus causing no change there.

What is still strange is that the default watermark level is only used if the watermark level computation returns a value below zero, though values *below* the default value are acceptable as long as the are above or equal to zero. Anyhow, I keep it like this for the time being to avoid breaking anything.

Greetings,
Thomas

Quoted 1 line

From 4ff44b36c3ca8ac0255700aaa8999e75efbf9598 Mon Sep 17 00:00:00 2001

From: thor <[email protected]>
Date: Sat, 7 Jun 2014 22:23:16 +0200
Subject: [PATCH] Added a min watermark level.

---
 drivers/gpu/drm/i915/i915_reg.h  |    1 +
 drivers/gpu/drm/i915/intel_drv.h |    1 +
 drivers/gpu/drm/i915/intel_pm.c  |   16 ++++++++++++++++
 3 files changed, 18 insertions(+)
drivers/gpu/drm/i915/i915_reg.h +1 -0
index 286f05c..442240b 100644
@@ -3897,6 +3897,7 @@ enum punit_power_well {
 #define I915_FIFO_SIZE		95
 #define I855GM_FIFO_SIZE	127 /* In cachelines */
 #define I830_FIFO_SIZE		95
+#define I830_MIN_WM		8
 
 #define VALLEYVIEW_MAX_WM	0xff
 #define G4X_MAX_WM		0x3f
drivers/gpu/drm/i915/intel_drv.h +1 -0
index 78d4124..16d2f68 100644
@@ -458,6 +458,7 @@ struct intel_plane {
 
 struct intel_watermark_params {
 	unsigned long fifo_size;
+	unsigned long min_wm;
 	unsigned long max_wm;
 	unsigned long default_wm;
 	unsigned long guard_size;
drivers/gpu/drm/i915/intel_pm.c +16 -0
index f83d1ff..ac8a832 100644
@@ -866,6 +866,7 @@ static int i845_get_fifo_size(struct drm_device *dev, int plane)
 /* Pineview has different values for various configs */
 static const struct intel_watermark_params pineview_display_wm = {
 	.fifo_size = PINEVIEW_DISPLAY_FIFO,
+	.min_wm = 0,
 	.max_wm = PINEVIEW_MAX_WM,
 	.default_wm = PINEVIEW_DFT_WM,
 	.guard_size = PINEVIEW_GUARD_WM,
@@ -873,6 +874,7 @@ static const struct intel_watermark_params pineview_display_wm = {
 };
 static const struct intel_watermark_params pineview_display_hplloff_wm = {
 	.fifo_size = PINEVIEW_DISPLAY_FIFO,
+	.min_wm = 0,
 	.max_wm = PINEVIEW_MAX_WM,
 	.default_wm = PINEVIEW_DFT_HPLLOFF_WM,
 	.guard_size = PINEVIEW_GUARD_WM,
@@ -880,6 +882,7 @@ static const struct intel_watermark_params pineview_display_hplloff_wm = {
 };
 static const struct intel_watermark_params pineview_cursor_wm = {
 	.fifo_size = PINEVIEW_CURSOR_FIFO,
+	.min_wm = 0,
 	.max_wm = PINEVIEW_CURSOR_MAX_WM,
 	.default_wm = PINEVIEW_CURSOR_DFT_WM,
 	.guard_size = PINEVIEW_CURSOR_GUARD_WM,
@@ -887,6 +890,7 @@ static const struct intel_watermark_params pineview_cursor_wm = {
 };
 static const struct intel_watermark_params pineview_cursor_hplloff_wm = {
 	.fifo_size = PINEVIEW_CURSOR_FIFO,
+	.min_wm = 0,
 	.max_wm = PINEVIEW_CURSOR_MAX_WM,
 	.default_wm = PINEVIEW_CURSOR_DFT_WM,
 	.guard_size = PINEVIEW_CURSOR_GUARD_WM,
@@ -894,6 +898,7 @@ static const struct intel_watermark_params pineview_cursor_hplloff_wm = {
 };
 static const struct intel_watermark_params g4x_wm_info = {
 	.fifo_size = G4X_FIFO_SIZE,
+	.min_wm = 0,
 	.max_wm = G4X_MAX_WM,
 	.default_wm = G4X_MAX_WM,
 	.guard_size = 2,
@@ -901,6 +906,7 @@ static const struct intel_watermark_params g4x_wm_info = {
 };
 static const struct intel_watermark_params g4x_cursor_wm_info = {
 	.fifo_size = I965_CURSOR_FIFO,
+	.min_wm = 0,
 	.max_wm = I965_CURSOR_MAX_WM,
 	.default_wm = I965_CURSOR_DFT_WM,
 	.guard_size = 2,
@@ -908,6 +914,7 @@ static const struct intel_watermark_params g4x_cursor_wm_info = {
 };
 static const struct intel_watermark_params valleyview_wm_info = {
 	.fifo_size = VALLEYVIEW_FIFO_SIZE,
+	.min_wm = 0,
 	.max_wm = VALLEYVIEW_MAX_WM,
 	.default_wm = VALLEYVIEW_MAX_WM,
 	.guard_size = 2,
@@ -915,6 +922,7 @@ static const struct intel_watermark_params valleyview_wm_info = {
 };
 static const struct intel_watermark_params valleyview_cursor_wm_info = {
 	.fifo_size = I965_CURSOR_FIFO,
+	.min_wm = 0,
 	.max_wm = VALLEYVIEW_CURSOR_MAX_WM,
 	.default_wm = I965_CURSOR_DFT_WM,
 	.guard_size = 2,
@@ -922,6 +930,7 @@ static const struct intel_watermark_params valleyview_cursor_wm_info = {
 };
 static const struct intel_watermark_params i965_cursor_wm_info = {
 	.fifo_size = I965_CURSOR_FIFO,
+	.min_wm = 0,
 	.max_wm = I965_CURSOR_MAX_WM,
 	.default_wm = I965_CURSOR_DFT_WM,
 	.guard_size = 2,
@@ -929,6 +938,7 @@ static const struct intel_watermark_params i965_cursor_wm_info = {
 };
 static const struct intel_watermark_params i945_wm_info = {
 	.fifo_size = I945_FIFO_SIZE,
+	.min_wm = 0,
 	.max_wm = I915_MAX_WM,
 	.default_wm = 1,
 	.guard_size = 2,
@@ -936,6 +946,7 @@ static const struct intel_watermark_params i945_wm_info = {
 };
 static const struct intel_watermark_params i915_wm_info = {
 	.fifo_size = I915_FIFO_SIZE,
+	.min_wm = 0,
 	.max_wm = I915_MAX_WM,
 	.default_wm = 1,
 	.guard_size = 2,
@@ -943,6 +954,7 @@ static const struct intel_watermark_params i915_wm_info = {
 };
 static const struct intel_watermark_params i830_wm_info = {
 	.fifo_size = I855GM_FIFO_SIZE,
+	.min_wm = I830_MIN_WM,
 	.max_wm = I915_MAX_WM,
 	.default_wm = 1,
 	.guard_size = 2,
@@ -950,6 +962,7 @@ static const struct intel_watermark_params i830_wm_info = {
 };
 static const struct intel_watermark_params i845_wm_info = {
 	.fifo_size = I830_FIFO_SIZE,
+	.min_wm = I830_MIN_WM,
 	.max_wm = I915_MAX_WM,
 	.default_wm = 1,
 	.guard_size = 2,
@@ -1003,6 +1016,9 @@ static unsigned long intel_calculate_wm(unsigned long clock_in_khz,
 		wm_size = wm->max_wm;
 	if (wm_size <= 0)
 		wm_size = wm->default_wm;
+	if (wm_size < (long)wm->min_wm)
+		wm_size = wm->min_wm;
+
 	return wm_size;
 }
 
Signature · 1 line
1.7.10.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

#11 lore raw

Re: [PATCH 01/15] drm/i915: Use named initializers for gmch wm params

In reply to Chris Wilson
Quoted 11 lines · Chris Wilson
Quoted 7 lines · On Thu, Jun 05, 2014 at 07:15:50PM +0300, [email protected] wrote:

From: Ville Syrjälä <[email protected]>

Using names initializers when filling out the watermark structs saves you from having go look up the struct definition every single time.

Thank you,

My rusty "fix watermarks for gen2/3" wip branch had this too. Queued for -next, thanks for the patch.
-Daniel

Signature · 3 lines
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
#12 lore raw

PATCH 2/15 drm/i915: Fix gen2 planes B and C max watermark value

In reply to [email protected]

From: Ville Syrjälä <[email protected]>

The max watermark value for gen2 planes B and C is 0x1f, instead of the 0x3f that plane A uses.

Also check against the max even if the pipe is disabled since the FIFO size exceeds the plane B and C max watermark value.

---
 drivers/gpu/drm/i915/intel_pm.c | 24 ++++++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)
drivers/gpu/drm/i915/intel_pm.c +20 -4
index f83d1ff..03904de 100644
@@ -941,13 +941,20 @@ static const struct intel_watermark_params i915_wm_info = {
 	.guard_size = 2,
 	.cacheline_size = I915_FIFO_LINE_SIZE,
 };
-static const struct intel_watermark_params i830_wm_info = {
+static const struct intel_watermark_params i830_a_wm_info = {
 	.fifo_size = I855GM_FIFO_SIZE,
 	.max_wm = I915_MAX_WM,
 	.default_wm = 1,
 	.guard_size = 2,
 	.cacheline_size = I830_FIFO_LINE_SIZE,
 };
+static const struct intel_watermark_params i830_bc_wm_info = {
+	.fifo_size = I855GM_FIFO_SIZE,
+	.max_wm = I915_MAX_WM/2,
+	.default_wm = 1,
+	.guard_size = 2,
+	.cacheline_size = I830_FIFO_LINE_SIZE,
+};
 static const struct intel_watermark_params i845_wm_info = {
 	.fifo_size = I830_FIFO_SIZE,
 	.max_wm = I915_MAX_WM,
@@ -1506,7 +1513,7 @@ static void i9xx_update_wm(struct drm_crtc *unused_crtc)
 	else if (!IS_GEN2(dev))
 		wm_info = &i915_wm_info;
 	else
-		wm_info = &i830_wm_info;
+		wm_info = &i830_a_wm_info;
 
 	fifo_size = dev_priv->display.get_fifo_size(dev, 0);
 	crtc = intel_get_crtc_for_plane(dev, 0);
@@ -1521,8 +1528,14 @@ static void i9xx_update_wm(struct drm_crtc *unused_crtc)
 					       wm_info, fifo_size, cpp,
 					       latency_ns);
 		enabled = crtc;
-	} else
+	} else {
 		planea_wm = fifo_size - wm_info->guard_size;
+		if (planea_wm > (long)wm_info->max_wm)
+			planea_wm = wm_info->max_wm;
+	}
+
+	if (IS_GEN2(dev))
+		wm_info = &i830_bc_wm_info;
 
 	fifo_size = dev_priv->display.get_fifo_size(dev, 1);
 	crtc = intel_get_crtc_for_plane(dev, 1);
@@ -1540,8 +1553,11 @@ static void i9xx_update_wm(struct drm_crtc *unused_crtc)
 			enabled = crtc;
 		else
 			enabled = NULL;
-	} else
+	} else {
 		planeb_wm = fifo_size - wm_info->guard_size;
+		if (planeb_wm > (long)wm_info->max_wm)
+			planeb_wm = wm_info->max_wm;
+	}
 
 	DRM_DEBUG_KMS("FIFO watermarks - A: %d, B: %d\n", planea_wm, planeb_wm);
 
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#13 lore raw

PATCH 3/15 drm/i915: Don't get hw state from DVO chip unless DVO is enabled

In reply to [email protected]

From: Ville Syrjälä <[email protected]>

Certain DVO chips (ns2501 for example) don't like to be accessed unless the PLL is running. Simply skip the DVO get_hw_state if the DVO port is disabled.

---
 drivers/gpu/drm/i915/intel_dvo.c | 8 ++++++++
 1 file changed, 8 insertions(+)
drivers/gpu/drm/i915/intel_dvo.c +8 -0
index a3631c0..5d7d975 100644
@@ -112,7 +112,15 @@ static struct intel_dvo *intel_attached_dvo(struct drm_connector *connector)
 
 static bool intel_dvo_connector_get_hw_state(struct intel_connector *connector)
 {
+	struct drm_device *dev = connector->base.dev;
+	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_dvo *intel_dvo = intel_attached_dvo(&connector->base);
+	u32 tmp;
+
+	tmp = I915_READ(intel_dvo->dev.dvo_reg);
+
+	if (!(tmp & DVO_ENABLE))
+		return false;
 
 	return intel_dvo->dev.dev_ops->get_hw_state(&intel_dvo->dev);
 }
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#14 lore raw

Re: [PATCH 03/15] drm/i915: Don't get hw state from DVO chip unless DVO is enabled

Quoted 7 lines · On Thu, Jun 05, 2014 at 07:15:52PM +0300, [email protected] wrote:

From: Ville Syrjälä <[email protected]>

Certain DVO chips (ns2501 for example) don't like to be accessed unless the PLL is running. Simply skip the DVO get_hw_state if the DVO port is disabled.

Definitely makes sense independent of the other patches. Queued for -next, thanks for the patch.
-Daniel

Quoted 31 lines
---
 drivers/gpu/drm/i915/intel_dvo.c | 8 ++++++++
 1 file changed, 8 insertions(+)
drivers/gpu/drm/i915/intel_dvo.c +8 -0
index a3631c0..5d7d975 100644
@@ -112,7 +112,15 @@ static struct intel_dvo *intel_attached_dvo(struct drm_connector *connector)
 
 static bool intel_dvo_connector_get_hw_state(struct intel_connector *connector)
 {
+	struct drm_device *dev = connector->base.dev;
+	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_dvo *intel_dvo = intel_attached_dvo(&connector->base);
+	u32 tmp;
+
+	tmp = I915_READ(intel_dvo->dev.dvo_reg);
+
+	if (!(tmp & DVO_ENABLE))
+		return false;
 
 	return intel_dvo->dev.dev_ops->get_hw_state(&intel_dvo->dev);
 }
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Signature · 3 lines
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
#15 lore raw

PATCH 4/15 drm/i915: ns2501 is on DVOB

In reply to [email protected]

From: Ville Syrjälä <[email protected]>

On Fujitsu-Siememens S6010 the ns2501 chip is hooked up to DVOB instead of DVOC.

FIXME: Maybe need to dig out the correct DVO port from VBT

---
 drivers/gpu/drm/i915/intel_dvo.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/i915/intel_dvo.c +1 -1
index 5d7d975..be560bb 100644
@@ -85,7 +85,7 @@ static const struct intel_dvo_device intel_dvo_devices[] = {
 	{
 	        .type = INTEL_DVO_CHIP_TMDS,
 		.name = "ns2501",
-		.dvo_reg = DVOC,
+		.dvo_reg = DVOB,
 		.slave_addr = NS2501_ADDR,
 		.dev_ops = &ns2501_ops,
        }
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#16 lore raw

Re: [PATCH 04/15] drm/i915: ns2501 is on DVOB

Quoted 6 lines · On Thu, Jun 05, 2014 at 07:15:53PM +0300, [email protected] wrote:

From: Ville Syrjälä <[email protected]>

On Fujitsu-Siememens S6010 the ns2501 chip is hooked up to DVOB instead of DVOC.

FIXME: Maybe need to dig out the correct DVO port from VBT

Well we could have 2 match structs for dvoc and dvob. I guess on Thomas' X30 it is actually on dvob, otherwise he wouldn't have picked that one ... -Daniel

Quoted 26 lines
---
 drivers/gpu/drm/i915/intel_dvo.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/i915/intel_dvo.c +1 -1
index 5d7d975..be560bb 100644
@@ -85,7 +85,7 @@ static const struct intel_dvo_device intel_dvo_devices[] = {
 	{
 	        .type = INTEL_DVO_CHIP_TMDS,
 		.name = "ns2501",
-		.dvo_reg = DVOC,
+		.dvo_reg = DVOB,
 		.slave_addr = NS2501_ADDR,
 		.dev_ops = &ns2501_ops,
        }
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Signature · 3 lines
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
#17 lore raw

Re: [PATCH 04/15] drm/i915: ns2501 is on DVOB

Quoted 10 lines · Daniel Vetter
Quoted 6 lines · On Thu, Jun 05, 2014 at 07:15:53PM +0300, [email protected] wrote:

From: Ville Syrjälä <[email protected]>

On Fujitsu-Siememens S6010 the ns2501 chip is hooked up to DVOB instead of DVOC.

FIXME: Maybe need to dig out the correct DVO port from VBT

Well we could have 2 match structs for dvoc and dvob. I guess on Thomas' X30 it is actually on dvob, otherwise he wouldn't have picked that one ...

Sure, but we can't probe the DVO port so we need to use VBT/DMI/something to figure out which one to pick. In theory VBT should have information.

Quoted 33 lines

-Daniel

Quoted 26 lines
---
 drivers/gpu/drm/i915/intel_dvo.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/i915/intel_dvo.c +1 -1
index 5d7d975..be560bb 100644
@@ -85,7 +85,7 @@ static const struct intel_dvo_device intel_dvo_devices[] = {
 	{
 	        .type = INTEL_DVO_CHIP_TMDS,
 		.name = "ns2501",
-		.dvo_reg = DVOC,
+		.dvo_reg = DVOB,
 		.slave_addr = NS2501_ADDR,
 		.dev_ops = &ns2501_ops,
        }
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Signature · 3 lines
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
Signature · 2 lines
Ville Syrjälä
Intel OTC
#18 lore raw

PATCH 5/15 drm/i915: Enable DVO between mode_set and dpms hooks

In reply to [email protected]

From: Ville Syrjälä <[email protected]>

To more closely match the IEGD ns2501 driver behaviour, call the mode_set hook while the DVO port is still disabled, then enable the DVO port, and finally call the dpms hook.

---
 drivers/gpu/drm/i915/intel_dvo.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/gpu/drm/i915/intel_dvo.c +3 -2
index be560bb..463cd40 100644
@@ -185,12 +185,13 @@ static void intel_enable_dvo(struct intel_encoder *encoder)
 	u32 dvo_reg = intel_dvo->dev.dvo_reg;
 	u32 temp = I915_READ(dvo_reg);
 
-	I915_WRITE(dvo_reg, temp | DVO_ENABLE);
-	I915_READ(dvo_reg);
 	intel_dvo->dev.dev_ops->mode_set(&intel_dvo->dev,
 					 &crtc->config.requested_mode,
 					 &crtc->config.adjusted_mode);
 
+	I915_WRITE(dvo_reg, temp | DVO_ENABLE);
+	I915_READ(dvo_reg);
+
 	intel_dvo->dev.dev_ops->dpms(&intel_dvo->dev, true);
 }
 
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#19 lore raw

PATCH 6/15 drm/i915: Don't call DVO mode_set hook on DPMS changes

In reply to [email protected]

From: Ville Syrjälä <[email protected]>

Calling the mode_set hook on DPMS changes doesn't seem to be necessary for ns2501. Just drop it.

---
 drivers/gpu/drm/i915/intel_dvo.c | 4 ----
 1 file changed, 4 deletions(-)
drivers/gpu/drm/i915/intel_dvo.c +0 -4
index 463cd40..ad01c3f 100644
@@ -227,10 +227,6 @@ static void intel_dvo_dpms(struct drm_connector *connector, int mode)
 
 		intel_crtc_update_dpms(crtc);
 
-		intel_dvo->dev.dev_ops->mode_set(&intel_dvo->dev,
-						 &config->requested_mode,
-						 &config->adjusted_mode);
-
 		intel_dvo->dev.dev_ops->dpms(&intel_dvo->dev, true);
 	} else {
 		intel_dvo->dev.dev_ops->dpms(&intel_dvo->dev, false);
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#20 lore raw

PATCH 7/15 drm/i915: Kill useless ns2501_dump_regs

In reply to [email protected]

From: Ville Syrjälä <[email protected]>

---
 drivers/gpu/drm/i915/dvo_ns2501.c | 17 -----------------
 1 file changed, 17 deletions(-)
drivers/gpu/drm/i915/dvo_ns2501.c +0 -17
index 74f2af7..85030d4 100644
@@ -479,22 +479,6 @@ static void ns2501_dpms(struct intel_dvo_device *dvo, bool enable)
 	}
 }
 
-static void ns2501_dump_regs(struct intel_dvo_device *dvo)
-{
-	uint8_t val;
-
-	ns2501_readb(dvo, NS2501_FREQ_LO, &val);
-	DRM_DEBUG_KMS("NS2501_FREQ_LO: 0x%02x\n", val);
-	ns2501_readb(dvo, NS2501_FREQ_HI, &val);
-	DRM_DEBUG_KMS("NS2501_FREQ_HI: 0x%02x\n", val);
-	ns2501_readb(dvo, NS2501_REG8, &val);
-	DRM_DEBUG_KMS("NS2501_REG8: 0x%02x\n", val);
-	ns2501_readb(dvo, NS2501_REG9, &val);
-	DRM_DEBUG_KMS("NS2501_REG9: 0x%02x\n", val);
-	ns2501_readb(dvo, NS2501_REGC, &val);
-	DRM_DEBUG_KMS("NS2501_REGC: 0x%02x\n", val);
-}
-
 static void ns2501_destroy(struct intel_dvo_device *dvo)
 {
 	struct ns2501_priv *ns = dvo->dev_priv;
@@ -512,6 +496,5 @@ struct intel_dvo_dev_ops ns2501_ops = {
 	.mode_set = ns2501_mode_set,
 	.dpms = ns2501_dpms,
 	.get_hw_state = ns2501_get_hw_state,
-	.dump_regs = ns2501_dump_regs,
 	.destroy = ns2501_destroy,
 };
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#21 lore raw

PATCH 8/15 drm/i915: Rewrite ns2501 driver a bit

In reply to [email protected]

From: Ville Syrjälä <[email protected]>

Try to use the same programming sequence as used by the IEGD driver.

Also shovel the magic register values into a big static const array.

The register values are actually the based on what the BIOS programs on the Fujitsu-Siemens Lifebook S6010. IEGD seemed to have hardcoded register values (which also enabled the scaler for 1024x768 mode). However those didn't actually work so well on the S6010. Possibly the pipe timings that got used didn't match the ns2501 configuration.

---
 drivers/gpu/drm/i915/dvo_ns2501.c | 529 +++++++++++++++++++++++---------------
 1 file changed, 325 insertions(+), 204 deletions(-)
drivers/gpu/drm/i915/dvo_ns2501.c +325 -204
index 85030d4..b278571 100644
@@ -60,16 +60,291 @@
 
 #define NS2501_REGC 0x0c
 
+enum {
+	MODE_640x480,
+	MODE_800x600,
+	MODE_1024x768,
+};
+
+struct ns2501_reg {
+	 uint8_t offset;
+	 uint8_t value;
+};
+
+/*
+ * Magic values based on what the BIOS on
+ * Fujitsu-Siemens Lifebook S6010 programs (1024x768 panel).
+ */
+static const struct ns2501_reg regs_1024x768[][86] = {
+	[MODE_640x480] = {
+		[0] = { .offset = 0x0a, .value = 0x81, },
+		[1] = { .offset = 0x18, .value = 0x07, },
+		[2] = { .offset = 0x19, .value = 0x00, },
+		[3] = { .offset = 0x1a, .value = 0x00, },
+		[4] = { .offset = 0x1b, .value = 0x11, },
+		[5] = { .offset = 0x1c, .value = 0x54, },
+		[6] = { .offset = 0x1d, .value = 0x03, },
+		[7] = { .offset = 0x1e, .value = 0x02, },
+		[8] = { .offset = 0xf3, .value = 0x90, },
+		[9] = { .offset = 0xf9, .value = 0x00, },
+		[10] = { .offset = 0xc1, .value = 0x90, },
+		[11] = { .offset = 0xc2, .value = 0x00, },
+		[12] = { .offset = 0xc3, .value = 0x0f, },
+		[13] = { .offset = 0xc4, .value = 0x03, },
+		[14] = { .offset = 0xc5, .value = 0x16, },
+		[15] = { .offset = 0xc6, .value = 0x00, },
+		[16] = { .offset = 0xc7, .value = 0x02, },
+		[17] = { .offset = 0xc8, .value = 0x02, },
+		[18] = { .offset = 0xf4, .value = 0x00, },
+		[19] = { .offset = 0x80, .value = 0xff, },
+		[20] = { .offset = 0x81, .value = 0x07, },
+		[21] = { .offset = 0x82, .value = 0x3d, },
+		[22] = { .offset = 0x83, .value = 0x05, },
+		[23] = { .offset = 0x94, .value = 0x00, },
+		[24] = { .offset = 0x95, .value = 0x00, },
+		[25] = { .offset = 0x96, .value = 0x05, },
+		[26] = { .offset = 0x97, .value = 0x00, },
+		[27] = { .offset = 0x9a, .value = 0x88, },
+		[28] = { .offset = 0x9b, .value = 0x00, },
+		[29] = { .offset = 0x98, .value = 0x00, },
+		[30] = { .offset = 0x99, .value = 0x00, },
+		[31] = { .offset = 0xf7, .value = 0x88, },
+		[32] = { .offset = 0xf8, .value = 0x0a, },
+		[33] = { .offset = 0x9c, .value = 0x24, },
+		[34] = { .offset = 0x9d, .value = 0x00, },
+		[35] = { .offset = 0x9e, .value = 0x25, },
+		[36] = { .offset = 0x9f, .value = 0x03, },
+		[37] = { .offset = 0xa0, .value = 0x28, },
+		[38] = { .offset = 0xa1, .value = 0x01, },
+		[39] = { .offset = 0xa2, .value = 0x28, },
+		[40] = { .offset = 0xa3, .value = 0x05, },
+		[41] = { .offset = 0xb6, .value = 0x09, },
+		[42] = { .offset = 0xb8, .value = 0x00, },
+		[43] = { .offset = 0xb9, .value = 0xa0, },
+		[44] = { .offset = 0xba, .value = 0x00, },
+		[45] = { .offset = 0xbb, .value = 0x20, },
+		[46] = { .offset = 0x10, .value = 0x00, },
+		[47] = { .offset = 0x11, .value = 0xa0, },
+		[48] = { .offset = 0x12, .value = 0x02, },
+		[49] = { .offset = 0x20, .value = 0x00, },
+		[50] = { .offset = 0x22, .value = 0x00, },
+		[51] = { .offset = 0x23, .value = 0x00, },
+		[52] = { .offset = 0x24, .value = 0x00, },
+		[53] = { .offset = 0x25, .value = 0x00, },
+		[54] = { .offset = 0x8c, .value = 0x10, },
+		[55] = { .offset = 0x8d, .value = 0x02, },
+		[56] = { .offset = 0x8e, .value = 0x10, },
+		[57] = { .offset = 0x8f, .value = 0x00, },
+		[58] = { .offset = 0x90, .value = 0xff, },
+		[59] = { .offset = 0x91, .value = 0x07, },
+		[60] = { .offset = 0x92, .value = 0xa0, },
+		[61] = { .offset = 0x93, .value = 0x02, },
+		[62] = { .offset = 0xa5, .value = 0x00, },
+		[63] = { .offset = 0xa6, .value = 0x00, },
+		[64] = { .offset = 0xa7, .value = 0x00, },
+		[65] = { .offset = 0xa8, .value = 0x00, },
+		[66] = { .offset = 0xa9, .value = 0x04, },
+		[67] = { .offset = 0xaa, .value = 0x70, },
+		[68] = { .offset = 0xab, .value = 0x4f, },
+		[69] = { .offset = 0xac, .value = 0x00, },
+		[70] = { .offset = 0xa4, .value = 0x84, },
+		[71] = { .offset = 0x7e, .value = 0x18, },
+		[72] = { .offset = 0x84, .value = 0x00, },
+		[73] = { .offset = 0x85, .value = 0x00, },
+		[74] = { .offset = 0x86, .value = 0x00, },
+		[75] = { .offset = 0x87, .value = 0x00, },
+		[76] = { .offset = 0x88, .value = 0x00, },
+		[77] = { .offset = 0x89, .value = 0x00, },
+		[78] = { .offset = 0x8a, .value = 0x00, },
+		[79] = { .offset = 0x8b, .value = 0x00, },
+		[80] = { .offset = 0x26, .value = 0x00, },
+		[81] = { .offset = 0x27, .value = 0x00, },
+		[82] = { .offset = 0xad, .value = 0x00, },
+		[83] = { .offset = 0x08, .value = 0x30, }, /* 0x31 */
+		[84] = { .offset = 0x41, .value = 0x00, },
+		[85] = { .offset = 0xc0, .value = 0x05, },
+	},
+	[MODE_800x600] = {
+		[0] = { .offset = 0x0a, .value = 0x81, },
+		[1] = { .offset = 0x18, .value = 0x07, },
+		[2] = { .offset = 0x19, .value = 0x00, },
+		[3] = { .offset = 0x1a, .value = 0x00, },
+		[4] = { .offset = 0x1b, .value = 0x19, },
+		[5] = { .offset = 0x1c, .value = 0x64, },
+		[6] = { .offset = 0x1d, .value = 0x02, },
+		[7] = { .offset = 0x1e, .value = 0x02, },
+		[8] = { .offset = 0xf3, .value = 0x90, },
+		[9] = { .offset = 0xf9, .value = 0x00, },
+		[10] = { .offset = 0xc1, .value = 0xd7, },
+		[11] = { .offset = 0xc2, .value = 0x00, },
+		[12] = { .offset = 0xc3, .value = 0xf8, },
+		[13] = { .offset = 0xc4, .value = 0x03, },
+		[14] = { .offset = 0xc5, .value = 0x1a, },
+		[15] = { .offset = 0xc6, .value = 0x00, },
+		[16] = { .offset = 0xc7, .value = 0x73, },
+		[17] = { .offset = 0xc8, .value = 0x02, },
+		[18] = { .offset = 0xf4, .value = 0x00, },
+		[19] = { .offset = 0x80, .value = 0x27, },
+		[20] = { .offset = 0x81, .value = 0x03, },
+		[21] = { .offset = 0x82, .value = 0x41, },
+		[22] = { .offset = 0x83, .value = 0x05, },
+		[23] = { .offset = 0x94, .value = 0x00, },
+		[24] = { .offset = 0x95, .value = 0x00, },
+		[25] = { .offset = 0x96, .value = 0x05, },
+		[26] = { .offset = 0x97, .value = 0x00, },
+		[27] = { .offset = 0x9a, .value = 0x88, },
+		[28] = { .offset = 0x9b, .value = 0x00, },
+		[29] = { .offset = 0x98, .value = 0x00, },
+		[30] = { .offset = 0x99, .value = 0x00, },
+		[31] = { .offset = 0xf7, .value = 0x88, },
+		[32] = { .offset = 0xf8, .value = 0x06, },
+		[33] = { .offset = 0x9c, .value = 0x23, },
+		[34] = { .offset = 0x9d, .value = 0x00, },
+		[35] = { .offset = 0x9e, .value = 0x25, },
+		[36] = { .offset = 0x9f, .value = 0x03, },
+		[37] = { .offset = 0xa0, .value = 0x28, },
+		[38] = { .offset = 0xa1, .value = 0x01, },
+		[39] = { .offset = 0xa2, .value = 0x28, },
+		[40] = { .offset = 0xa3, .value = 0x05, },
+		[41] = { .offset = 0xb6, .value = 0x09, },
+		[42] = { .offset = 0xb8, .value = 0x30, },
+		[43] = { .offset = 0xb9, .value = 0xc8, },
+		[44] = { .offset = 0xba, .value = 0x00, },
+		[45] = { .offset = 0xbb, .value = 0x20, },
+		[46] = { .offset = 0x10, .value = 0x20, },
+		[47] = { .offset = 0x11, .value = 0xc8, },
+		[48] = { .offset = 0x12, .value = 0x02, },
+		[49] = { .offset = 0x20, .value = 0x00, },
+		[50] = { .offset = 0x22, .value = 0x00, },
+		[51] = { .offset = 0x23, .value = 0x00, },
+		[52] = { .offset = 0x24, .value = 0x00, },
+		[53] = { .offset = 0x25, .value = 0x00, },
+		[54] = { .offset = 0x8c, .value = 0x10, },
+		[55] = { .offset = 0x8d, .value = 0x02, },
+		[56] = { .offset = 0x8e, .value = 0x04, },
+		[57] = { .offset = 0x8f, .value = 0x00, },
+		[58] = { .offset = 0x90, .value = 0xff, },
+		[59] = { .offset = 0x91, .value = 0x07, },
+		[60] = { .offset = 0x92, .value = 0xa0, },
+		[61] = { .offset = 0x93, .value = 0x02, },
+		[62] = { .offset = 0xa5, .value = 0x00, },
+		[63] = { .offset = 0xa6, .value = 0x00, },
+		[64] = { .offset = 0xa7, .value = 0x00, },
+		[65] = { .offset = 0xa8, .value = 0x00, },
+		[66] = { .offset = 0xa9, .value = 0x83, },
+		[67] = { .offset = 0xaa, .value = 0x40, },
+		[68] = { .offset = 0xab, .value = 0x32, },
+		[69] = { .offset = 0xac, .value = 0x00, },
+		[70] = { .offset = 0xa4, .value = 0x80, },
+		[71] = { .offset = 0x7e, .value = 0x18, },
+		[72] = { .offset = 0x84, .value = 0x00, },
+		[73] = { .offset = 0x85, .value = 0x00, },
+		[74] = { .offset = 0x86, .value = 0x00, },
+		[75] = { .offset = 0x87, .value = 0x00, },
+		[76] = { .offset = 0x88, .value = 0x00, },
+		[77] = { .offset = 0x89, .value = 0x00, },
+		[78] = { .offset = 0x8a, .value = 0x00, },
+		[79] = { .offset = 0x8b, .value = 0x00, },
+		[80] = { .offset = 0x26, .value = 0x00, },
+		[81] = { .offset = 0x27, .value = 0x00, },
+		[82] = { .offset = 0xad, .value = 0x00, },
+		[83] = { .offset = 0x08, .value = 0x30, }, /* 0x31 */
+		[84] = { .offset = 0x41, .value = 0x00, },
+		[85] = { .offset = 0xc0, .value = 0x07, },
+	},
+	[MODE_1024x768] = {
+		[0] = { .offset = 0x0a, .value = 0x81, },
+		[1] = { .offset = 0x18, .value = 0x07, },
+		[2] = { .offset = 0x19, .value = 0x00, },
+		[3] = { .offset = 0x1a, .value = 0x00, },
+		[4] = { .offset = 0x1b, .value = 0x11, },
+		[5] = { .offset = 0x1c, .value = 0x54, },
+		[6] = { .offset = 0x1d, .value = 0x03, },
+		[7] = { .offset = 0x1e, .value = 0x02, },
+		[8] = { .offset = 0xf3, .value = 0x90, },
+		[9] = { .offset = 0xf9, .value = 0x00, },
+		[10] = { .offset = 0xc1, .value = 0x90, },
+		[11] = { .offset = 0xc2, .value = 0x00, },
+		[12] = { .offset = 0xc3, .value = 0x0f, },
+		[13] = { .offset = 0xc4, .value = 0x03, },
+		[14] = { .offset = 0xc5, .value = 0x16, },
+		[15] = { .offset = 0xc6, .value = 0x00, },
+		[16] = { .offset = 0xc7, .value = 0x02, },
+		[17] = { .offset = 0xc8, .value = 0x02, },
+		[18] = { .offset = 0xf4, .value = 0x00, },
+		[19] = { .offset = 0x80, .value = 0xff, },
+		[20] = { .offset = 0x81, .value = 0x07, },
+		[21] = { .offset = 0x82, .value = 0x3d, },
+		[22] = { .offset = 0x83, .value = 0x05, },
+		[23] = { .offset = 0x94, .value = 0x00, },
+		[24] = { .offset = 0x95, .value = 0x00, },
+		[25] = { .offset = 0x96, .value = 0x05, },
+		[26] = { .offset = 0x97, .value = 0x00, },
+		[27] = { .offset = 0x9a, .value = 0x88, },
+		[28] = { .offset = 0x9b, .value = 0x00, },
+		[29] = { .offset = 0x98, .value = 0x00, },
+		[30] = { .offset = 0x99, .value = 0x00, },
+		[31] = { .offset = 0xf7, .value = 0x88, },
+		[32] = { .offset = 0xf8, .value = 0x0a, },
+		[33] = { .offset = 0x9c, .value = 0x24, },
+		[34] = { .offset = 0x9d, .value = 0x00, },
+		[35] = { .offset = 0x9e, .value = 0x25, },
+		[36] = { .offset = 0x9f, .value = 0x03, },
+		[37] = { .offset = 0xa0, .value = 0x28, },
+		[38] = { .offset = 0xa1, .value = 0x01, },
+		[39] = { .offset = 0xa2, .value = 0x28, },
+		[40] = { .offset = 0xa3, .value = 0x05, },
+		[41] = { .offset = 0xb6, .value = 0x09, },
+		[42] = { .offset = 0xb8, .value = 0x00, },
+		[43] = { .offset = 0xb9, .value = 0xa0, },
+		[44] = { .offset = 0xba, .value = 0x00, },
+		[45] = { .offset = 0xbb, .value = 0x20, },
+		[46] = { .offset = 0x10, .value = 0x00, },
+		[47] = { .offset = 0x11, .value = 0xa0, },
+		[48] = { .offset = 0x12, .value = 0x02, },
+		[49] = { .offset = 0x20, .value = 0x00, },
+		[50] = { .offset = 0x22, .value = 0x00, },
+		[51] = { .offset = 0x23, .value = 0x00, },
+		[52] = { .offset = 0x24, .value = 0x00, },
+		[53] = { .offset = 0x25, .value = 0x00, },
+		[54] = { .offset = 0x8c, .value = 0x10, },
+		[55] = { .offset = 0x8d, .value = 0x02, },
+		[56] = { .offset = 0x8e, .value = 0x10, },
+		[57] = { .offset = 0x8f, .value = 0x00, },
+		[58] = { .offset = 0x90, .value = 0xff, },
+		[59] = { .offset = 0x91, .value = 0x07, },
+		[60] = { .offset = 0x92, .value = 0xa0, },
+		[61] = { .offset = 0x93, .value = 0x02, },
+		[62] = { .offset = 0xa5, .value = 0x00, },
+		[63] = { .offset = 0xa6, .value = 0x00, },
+		[64] = { .offset = 0xa7, .value = 0x00, },
+		[65] = { .offset = 0xa8, .value = 0x00, },
+		[66] = { .offset = 0xa9, .value = 0x04, },
+		[67] = { .offset = 0xaa, .value = 0x70, },
+		[68] = { .offset = 0xab, .value = 0x4f, },
+		[69] = { .offset = 0xac, .value = 0x00, },
+		[70] = { .offset = 0xa4, .value = 0x84, },
+		[71] = { .offset = 0x7e, .value = 0x18, },
+		[72] = { .offset = 0x84, .value = 0x00, },
+		[73] = { .offset = 0x85, .value = 0x00, },
+		[74] = { .offset = 0x86, .value = 0x00, },
+		[75] = { .offset = 0x87, .value = 0x00, },
+		[76] = { .offset = 0x88, .value = 0x00, },
+		[77] = { .offset = 0x89, .value = 0x00, },
+		[78] = { .offset = 0x8a, .value = 0x00, },
+		[79] = { .offset = 0x8b, .value = 0x00, },
+		[80] = { .offset = 0x26, .value = 0x00, },
+		[81] = { .offset = 0x27, .value = 0x00, },
+		[82] = { .offset = 0xad, .value = 0x00, },
+		[83] = { .offset = 0x08, .value = 0x34, }, /* 0x35 */
+		[84] = { .offset = 0x41, .value = 0x00, },
+		[85] = { .offset = 0xc0, .value = 0x01, },
+	},
+};
+
 struct ns2501_priv {
-	//I2CDevRec d;
 	bool quiet;
-	int reg_8_shadow;
-	int reg_8_set;
-	// Shadow registers for i915
-	int dvoc;
-	int pll_a;
-	int srcdim;
-	int fw_blc;
+	const struct ns2501_reg *regs;
 };
 
 #define NSPTR(d) ((NS2501Ptr)(d->DriverPrivate.ptr))
@@ -205,11 +480,9 @@ static bool ns2501_init(struct intel_dvo_device *dvo,
 		goto out;
 	}
 	ns->quiet = false;
-	ns->reg_8_set = 0;
-	ns->reg_8_shadow =
-	    NS2501_8_PD | NS2501_8_BPAS | NS2501_8_VEN | NS2501_8_HEN;
 
 	DRM_DEBUG_KMS("init ns2501 dvo controller successfully!\n");
+
 	return true;
 
 out:
@@ -255,180 +528,26 @@ static void ns2501_mode_set(struct intel_dvo_device *dvo,
 			    struct drm_display_mode *mode,
 			    struct drm_display_mode *adjusted_mode)
 {
-	bool ok;
-	int retries = 10;
 	struct ns2501_priv *ns = (struct ns2501_priv *)(dvo->dev_priv);
+	int mode_idx, i;
 
 	DRM_DEBUG_KMS
 	    ("set mode (hdisplay=%d,htotal=%d,vdisplay=%d,vtotal=%d).\n",
 	     mode->hdisplay, mode->htotal, mode->vdisplay, mode->vtotal);
 
-	/*
-	 * Where do I find the native resolution for which scaling is not required???
-	 *
-	 * First trigger the DVO on as otherwise the chip does not appear on the i2c
-	 * bus.
-	 */
-	do {
-		ok = true;
-
-		if (mode->hdisplay == 800 && mode->vdisplay == 600) {
-			/* mode 277 */
-			ns->reg_8_shadow &= ~NS2501_8_BPAS;
-			DRM_DEBUG_KMS("switching to 800x600\n");
-
-			/*
-			 * No, I do not know where this data comes from.
-			 * It is just what the video bios left in the DVO, so
-			 * I'm just copying it here over.
-			 * This also means that I cannot support any other modes
-			 * except the ones supported by the bios.
-			 */
-			ok &= ns2501_writeb(dvo, 0x11, 0xc8);	// 0xc7 also works.
-			ok &= ns2501_writeb(dvo, 0x1b, 0x19);
-			ok &= ns2501_writeb(dvo, 0x1c, 0x62);	// VBIOS left 0x64 here, but 0x62 works nicer
-			ok &= ns2501_writeb(dvo, 0x1d, 0x02);
-
-			ok &= ns2501_writeb(dvo, 0x34, 0x03);
-			ok &= ns2501_writeb(dvo, 0x35, 0xff);
-
-			ok &= ns2501_writeb(dvo, 0x80, 0x27);
-			ok &= ns2501_writeb(dvo, 0x81, 0x03);
-			ok &= ns2501_writeb(dvo, 0x82, 0x41);
-			ok &= ns2501_writeb(dvo, 0x83, 0x05);
+	if (mode->hdisplay == 640 && mode->vdisplay == 480)
+		mode_idx = MODE_640x480;
+	else if (mode->hdisplay == 800 && mode->vdisplay == 600)
+		mode_idx = MODE_800x600;
+	else if (mode->hdisplay == 1024 && mode->vdisplay == 768)
+		mode_idx = MODE_1024x768;
+	else
+		return;
 
-			ok &= ns2501_writeb(dvo, 0x8d, 0x02);
-			ok &= ns2501_writeb(dvo, 0x8e, 0x04);
-			ok &= ns2501_writeb(dvo, 0x8f, 0x00);
+	ns->regs = regs_1024x768[mode_idx];
 
-			ok &= ns2501_writeb(dvo, 0x90, 0xfe);	/* vertical. VBIOS left 0xff here, but 0xfe works better */
-			ok &= ns2501_writeb(dvo, 0x91, 0x07);
-			ok &= ns2501_writeb(dvo, 0x94, 0x00);
-			ok &= ns2501_writeb(dvo, 0x95, 0x00);
-
-			ok &= ns2501_writeb(dvo, 0x96, 0x00);
-
-			ok &= ns2501_writeb(dvo, 0x99, 0x00);
-			ok &= ns2501_writeb(dvo, 0x9a, 0x88);
-
-			ok &= ns2501_writeb(dvo, 0x9c, 0x23);	/* Looks like first and last line of the image. */
-			ok &= ns2501_writeb(dvo, 0x9d, 0x00);
-			ok &= ns2501_writeb(dvo, 0x9e, 0x25);
-			ok &= ns2501_writeb(dvo, 0x9f, 0x03);
-
-			ok &= ns2501_writeb(dvo, 0xa4, 0x80);
-
-			ok &= ns2501_writeb(dvo, 0xb6, 0x00);
-
-			ok &= ns2501_writeb(dvo, 0xb9, 0xc8);	/* horizontal? */
-			ok &= ns2501_writeb(dvo, 0xba, 0x00);	/* horizontal? */
-
-			ok &= ns2501_writeb(dvo, 0xc0, 0x05);	/* horizontal? */
-			ok &= ns2501_writeb(dvo, 0xc1, 0xd7);
-
-			ok &= ns2501_writeb(dvo, 0xc2, 0x00);
-			ok &= ns2501_writeb(dvo, 0xc3, 0xf8);
-
-			ok &= ns2501_writeb(dvo, 0xc4, 0x03);
-			ok &= ns2501_writeb(dvo, 0xc5, 0x1a);
-
-			ok &= ns2501_writeb(dvo, 0xc6, 0x00);
-			ok &= ns2501_writeb(dvo, 0xc7, 0x73);
-			ok &= ns2501_writeb(dvo, 0xc8, 0x02);
-
-		} else if (mode->hdisplay == 640 && mode->vdisplay == 480) {
-			/* mode 274 */
-			DRM_DEBUG_KMS("switching to 640x480\n");
-			/*
-			 * No, I do not know where this data comes from.
-			 * It is just what the video bios left in the DVO, so
-			 * I'm just copying it here over.
-			 * This also means that I cannot support any other modes
-			 * except the ones supported by the bios.
-			 */
-			ns->reg_8_shadow &= ~NS2501_8_BPAS;
-
-			ok &= ns2501_writeb(dvo, 0x11, 0xa0);
-			ok &= ns2501_writeb(dvo, 0x1b, 0x11);
-			ok &= ns2501_writeb(dvo, 0x1c, 0x54);
-			ok &= ns2501_writeb(dvo, 0x1d, 0x03);
-
-			ok &= ns2501_writeb(dvo, 0x34, 0x03);
-			ok &= ns2501_writeb(dvo, 0x35, 0xff);
-
-			ok &= ns2501_writeb(dvo, 0x80, 0xff);
-			ok &= ns2501_writeb(dvo, 0x81, 0x07);
-			ok &= ns2501_writeb(dvo, 0x82, 0x3d);
-			ok &= ns2501_writeb(dvo, 0x83, 0x05);
-
-			ok &= ns2501_writeb(dvo, 0x8d, 0x02);
-			ok &= ns2501_writeb(dvo, 0x8e, 0x10);
-			ok &= ns2501_writeb(dvo, 0x8f, 0x00);
-
-			ok &= ns2501_writeb(dvo, 0x90, 0xff);	/* vertical */
-			ok &= ns2501_writeb(dvo, 0x91, 0x07);
-			ok &= ns2501_writeb(dvo, 0x94, 0x00);
-			ok &= ns2501_writeb(dvo, 0x95, 0x00);
-
-			ok &= ns2501_writeb(dvo, 0x96, 0x05);
-
-			ok &= ns2501_writeb(dvo, 0x99, 0x00);
-			ok &= ns2501_writeb(dvo, 0x9a, 0x88);
-
-			ok &= ns2501_writeb(dvo, 0x9c, 0x24);
-			ok &= ns2501_writeb(dvo, 0x9d, 0x00);
-			ok &= ns2501_writeb(dvo, 0x9e, 0x25);
-			ok &= ns2501_writeb(dvo, 0x9f, 0x03);
-
-			ok &= ns2501_writeb(dvo, 0xa4, 0x84);
-
-			ok &= ns2501_writeb(dvo, 0xb6, 0x09);
-
-			ok &= ns2501_writeb(dvo, 0xb9, 0xa0);	/* horizontal? */
-			ok &= ns2501_writeb(dvo, 0xba, 0x00);	/* horizontal? */
-
-			ok &= ns2501_writeb(dvo, 0xc0, 0x05);	/* horizontal? */
-			ok &= ns2501_writeb(dvo, 0xc1, 0x90);
-
-			ok &= ns2501_writeb(dvo, 0xc2, 0x00);
-			ok &= ns2501_writeb(dvo, 0xc3, 0x0f);
-
-			ok &= ns2501_writeb(dvo, 0xc4, 0x03);
-			ok &= ns2501_writeb(dvo, 0xc5, 0x16);
-
-			ok &= ns2501_writeb(dvo, 0xc6, 0x00);
-			ok &= ns2501_writeb(dvo, 0xc7, 0x02);
-			ok &= ns2501_writeb(dvo, 0xc8, 0x02);
-
-		} else if (mode->hdisplay == 1024 && mode->vdisplay == 768) {
-			/* mode 280 */
-			DRM_DEBUG_KMS("switching to 1024x768\n");
-			/*
-			 * This might or might not work, actually. I'm silently
-			 * assuming here that the native panel resolution is
-			 * 1024x768. If not, then this leaves the scaler disabled
-			 * generating a picture that is likely not the expected.
-			 *
-			 * Problem is that I do not know where to take the panel
-			 * dimensions from.
-			 *
-			 * Enable the bypass, scaling not required.
-			 *
-			 * The scaler registers are irrelevant here....
-			 *
-			 */
-			ns->reg_8_shadow |= NS2501_8_BPAS;
-			ok &= ns2501_writeb(dvo, 0x37, 0x44);
-		} else {
-			/*
-			 * Data not known. Bummer!
-			 * Hopefully, the code should not go here
-			 * as mode_OK delivered no other modes.
-			 */
-			ns->reg_8_shadow |= NS2501_8_BPAS;
-		}
-		ok &= ns2501_writeb(dvo, NS2501_REG8, ns->reg_8_shadow);
-	} while (!ok && retries--);
+	for (i = 0; i < 84; i++)
+		ns2501_writeb(dvo, ns->regs[i].offset, ns->regs[i].value);
 }
 
 /* set the NS2501 power state */
@@ -439,43 +558,45 @@ static bool ns2501_get_hw_state(struct intel_dvo_device *dvo)
 	if (!ns2501_readb(dvo, NS2501_REG8, &ch))
 		return false;
 
-	if (ch & NS2501_8_PD)
-		return true;
-	else
-		return false;
+	return ch & NS2501_8_PD;
 }
 
 /* set the NS2501 power state */
 static void ns2501_dpms(struct intel_dvo_device *dvo, bool enable)
 {
-	bool ok;
-	int retries = 10;
 	struct ns2501_priv *ns = (struct ns2501_priv *)(dvo->dev_priv);
-	unsigned char ch;
 
 	DRM_DEBUG_KMS("Trying set the dpms of the DVO to %i\n", enable);
 
-	ch = ns->reg_8_shadow;
+	if (enable) {
+		if (WARN_ON(ns->regs[83].offset != 0x08 ||
+			    ns->regs[84].offset != 0x41 ||
+			    ns->regs[85].offset != 0xc0))
+			return;
 
-	if (enable)
-		ch |= NS2501_8_PD;
-	else
-		ch &= ~NS2501_8_PD;
-
-	if (ns->reg_8_set == 0 || ns->reg_8_shadow != ch) {
-		ns->reg_8_set = 1;
-		ns->reg_8_shadow = ch;
-
-		do {
-			ok = true;
-			ok &= ns2501_writeb(dvo, NS2501_REG8, ch);
-			ok &=
-			    ns2501_writeb(dvo, 0x34,
-					  enable ? 0x03 : 0x00);
-			ok &=
-			    ns2501_writeb(dvo, 0x35,
-					  enable ? 0xff : 0x00);
-		} while (!ok && retries--);
+		ns2501_writeb(dvo, 0xc0, ns->regs[85].value | 0x08);
+
+		ns2501_writeb(dvo, 0x41, ns->regs[84].value);
+
+		ns2501_writeb(dvo, 0x34, 0x01);
+		msleep(15);
+
+		ns2501_writeb(dvo, 0x08, 0x35);
+		if (!(ns->regs[83].value & NS2501_8_BPAS))
+			ns2501_writeb(dvo, 0x08, 0x31);
+		msleep(200);
+
+		ns2501_writeb(dvo, 0x34, 0x03);
+
+		ns2501_writeb(dvo, 0xc0, ns->regs[85].value);
+	} else {
+		ns2501_writeb(dvo, 0x34, 0x01);
+		msleep(200);
+
+		ns2501_writeb(dvo, 0x08, 0x34);
+		msleep(15);
+
+		ns2501_writeb(dvo, 0x34, 0x00);
 	}
 }
 
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#22 lore raw

PATCH 9/15 drm/i915: Ignore VBT int_crt_support on 830M

In reply to [email protected]

From: Ville Syrjälä <[email protected]>

My Fujitsu-Siemens Lifebook S6010 definitely has a VGA connector, but the VBT says different. Ignore the VBT for 830M since it seems such old machines would generally have a VGA connector.

This is a regression caused by:
commit 9c2a03c2a194c086949f25d332937ac8dc4d9f7e
Author: Jesse Barnes <[email protected]>
Date: Fri Apr 4 16:12:07 2014 -0700

drm/i915: use VBT to determine whether to enumerate the VGA port

While at it refactor the code a bit to be more pleasing to the eye.

---
 drivers/gpu/drm/i915/intel_display.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)
drivers/gpu/drm/i915/intel_display.c +16 -1
index b5cbb28..3d51ceb 100644
@@ -11368,6 +11368,21 @@ const char *intel_output_name(int output)
 	return names[output];
 }
 
+static bool intel_crt_support(struct drm_device *dev)
+{
+	struct drm_i915_private *dev_priv = dev->dev_private;
+
+	/* no hardware support whatsoever */
+	if (IS_ULT(dev) || IS_CHERRYVIEW(dev))
+		return false;
+
+	/* Fujitsu-Siemens Lifebook S6010 VBT lies */
+	if (IS_I830(dev))
+		return true;
+
+	return dev_priv->vbt.int_crt_support;
+}
+
 static void intel_setup_outputs(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -11376,7 +11391,7 @@ static void intel_setup_outputs(struct drm_device *dev)
 
 	intel_lvds_init(dev);
 
-	if (!IS_ULT(dev) && !IS_CHERRYVIEW(dev) && dev_priv->vbt.int_crt_support)
+	if (intel_crt_support(dev))
 		intel_crt_init(dev);
 
 	if (HAS_DDI(dev)) {
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#23 lore raw

Re: [PATCH 09/15] drm/i915: Ignore VBT int_crt_support on 830M

Quoted 11 lines · On Thu, Jun 05, 2014 at 07:15:58PM +0300, [email protected] wrote:

From: Ville Syrjälä <[email protected]>

My Fujitsu-Siemens Lifebook S6010 definitely has a VGA connector, but the VBT says different. Ignore the VBT for 830M since it seems such old machines would generally have a VGA connector.

This is a regression caused by:
commit 9c2a03c2a194c086949f25d332937ac8dc4d9f7e
Author: Jesse Barnes <[email protected]>
Date: Fri Apr 4 16:12:07 2014 -0700

Quoted 5 lines

drm/i915: use VBT to determine whether to enumerate the VGA port

While at it refactor the code a bit to be more pleasing to the eye.

Well I think now's the time to move those checks into intel_crt_init. We don't care at all whether we have a vga port, and imo that way it's cleaner. eDP/mipi dsi and similar checks are also done in the _init functions.
-Daniel

Quoted 46 lines
---
 drivers/gpu/drm/i915/intel_display.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)
drivers/gpu/drm/i915/intel_display.c +16 -1
index b5cbb28..3d51ceb 100644
@@ -11368,6 +11368,21 @@ const char *intel_output_name(int output)
 	return names[output];
 }
 
+static bool intel_crt_support(struct drm_device *dev)
+{
+	struct drm_i915_private *dev_priv = dev->dev_private;
+
+	/* no hardware support whatsoever */
+	if (IS_ULT(dev) || IS_CHERRYVIEW(dev))
+		return false;
+
+	/* Fujitsu-Siemens Lifebook S6010 VBT lies */
+	if (IS_I830(dev))
+		return true;
+
+	return dev_priv->vbt.int_crt_support;
+}
+
 static void intel_setup_outputs(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -11376,7 +11391,7 @@ static void intel_setup_outputs(struct drm_device *dev)
 
 	intel_lvds_init(dev);
 
-	if (!IS_ULT(dev) && !IS_CHERRYVIEW(dev) && dev_priv->vbt.int_crt_support)
+	if (intel_crt_support(dev))
 		intel_crt_init(dev);
 
 	if (HAS_DDI(dev)) {
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Signature · 3 lines
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
#24 lore raw

PATCH v2 9/15 drm/i915: Ignore VBT int_crt_support on 830M

From: Ville Syrjälä <[email protected]>

My Fujitsu-Siemens Lifebook S6010 definitely has a VGA connector, but the VBT says different. Ignore the VBT for 830M since it seems such old machines would generally have a VGA connector.

This is a regression caused by:
commit 9c2a03c2a194c086949f25d332937ac8dc4d9f7e
Author: Jesse Barnes <[email protected]>
Date: Fri Apr 4 16:12:07 2014 -0700

drm/i915: use VBT to determine whether to enumerate the VGA port

While at it refactor the code a bit to be more pleasing to the eye.

v2: Move the check into intel_crt_init() (Daniel)

---
 drivers/gpu/drm/i915/intel_crt.c     | 22 ++++++++++++++++++++--
 drivers/gpu/drm/i915/intel_display.c |  3 +--
 2 files changed, 21 insertions(+), 4 deletions(-)
drivers/gpu/drm/i915/intel_crt.c +20 -2
index 5a045d3..5104e9f 100644
@@ -801,6 +801,25 @@ static const struct dmi_system_id intel_no_crt[] = {
 	{ }
 };
 
+static bool has_crt_support(struct drm_device *dev)
+{
+	struct drm_i915_private *dev_priv = dev->dev_private;
+
+	/* no hardware support whatsoever */
+	if (IS_ULT(dev) || IS_CHERRYVIEW(dev))
+		return false;
+
+	/* Skip machines without VGA that falsely report hotplug events */
+	if (dmi_check_system(intel_no_crt))
+		return false;
+
+	/* Fujitsu-Siemens Lifebook S6010 VBT lies */
+	if (IS_I830(dev))
+		return true;
+
+	return dev_priv->vbt.int_crt_support;
+}
+
 void intel_crt_init(struct drm_device *dev)
 {
 	struct drm_connector *connector;
@@ -808,8 +827,7 @@ void intel_crt_init(struct drm_device *dev)
 	struct intel_connector *intel_connector;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 
-	/* Skip machines without VGA that falsely report hotplug events */
-	if (dmi_check_system(intel_no_crt))
+	if (!has_crt_support(dev))
 		return;
 
 	crt = kzalloc(sizeof(struct intel_crt), GFP_KERNEL);
drivers/gpu/drm/i915/intel_display.c +1 -2
index b5cbb28..1060caa 100644
@@ -11376,8 +11376,7 @@ static void intel_setup_outputs(struct drm_device *dev)
 
 	intel_lvds_init(dev);
 
-	if (!IS_ULT(dev) && !IS_CHERRYVIEW(dev) && dev_priv->vbt.int_crt_support)
-		intel_crt_init(dev);
+	intel_crt_init(dev);
 
 	if (HAS_DDI(dev)) {
 		int found;
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Reviewed-by on v2 9/15
#25 lore raw

Re: [PATCH v2 09/15] drm/i915: Ignore VBT int_crt_support on 830M

Quoted 11 lines · On Fri, Jun 06, 2014 at 10:44:12PM +0300, [email protected] wrote:

From: Ville Syrjälä <[email protected]>

My Fujitsu-Siemens Lifebook S6010 definitely has a VGA connector, but the VBT says different. Ignore the VBT for 830M since it seems such old machines would generally have a VGA connector.

This is a regression caused by:
commit 9c2a03c2a194c086949f25d332937ac8dc4d9f7e
Author: Jesse Barnes <[email protected]>
Date: Fri Apr 4 16:12:07 2014 -0700

Quoted 7 lines

drm/i915: use VBT to determine whether to enumerate the VGA port

While at it refactor the code a bit to be more pleasing to the eye.

v2: Move the check into intel_crt_init() (Daniel)

We'll probably get more of these ...
-Daniel

Quoted 62 lines
---
 drivers/gpu/drm/i915/intel_crt.c     | 22 ++++++++++++++++++++--
 drivers/gpu/drm/i915/intel_display.c |  3 +--
 2 files changed, 21 insertions(+), 4 deletions(-)
drivers/gpu/drm/i915/intel_crt.c +20 -2
index 5a045d3..5104e9f 100644
@@ -801,6 +801,25 @@ static const struct dmi_system_id intel_no_crt[] = {
 	{ }
 };
 
+static bool has_crt_support(struct drm_device *dev)
+{
+	struct drm_i915_private *dev_priv = dev->dev_private;
+
+	/* no hardware support whatsoever */
+	if (IS_ULT(dev) || IS_CHERRYVIEW(dev))
+		return false;
+
+	/* Skip machines without VGA that falsely report hotplug events */
+	if (dmi_check_system(intel_no_crt))
+		return false;
+
+	/* Fujitsu-Siemens Lifebook S6010 VBT lies */
+	if (IS_I830(dev))
+		return true;
+
+	return dev_priv->vbt.int_crt_support;
+}
+
 void intel_crt_init(struct drm_device *dev)
 {
 	struct drm_connector *connector;
@@ -808,8 +827,7 @@ void intel_crt_init(struct drm_device *dev)
 	struct intel_connector *intel_connector;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 
-	/* Skip machines without VGA that falsely report hotplug events */
-	if (dmi_check_system(intel_no_crt))
+	if (!has_crt_support(dev))
 		return;
 
 	crt = kzalloc(sizeof(struct intel_crt), GFP_KERNEL);
drivers/gpu/drm/i915/intel_display.c +1 -2
index b5cbb28..1060caa 100644
@@ -11376,8 +11376,7 @@ static void intel_setup_outputs(struct drm_device *dev)
 
 	intel_lvds_init(dev);
 
-	if (!IS_ULT(dev) && !IS_CHERRYVIEW(dev) && dev_priv->vbt.int_crt_support)
-		intel_crt_init(dev);
+	intel_crt_init(dev);
 
 	if (HAS_DDI(dev)) {
 		int found;
Signature · 1 line
1.8.5.5
Signature · 3 lines
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
#26 lore raw

PATCH 1/1 Add minimum watermark level for I830

Dear Daniel, dear intel experts,

please find a minimally-invasive patch to add a minimum watermark level to the current watermark logic. This fixes the flickering and video overlay crashes on 830M(G) chipsets. Note that this patch does not alter the watermark algorithm on any other family of the intel chipsets.

Greetings,
Thomas

PS: What I do not understand about the current logic is that there is a "default watermark" level if the computed watermark is below zero, though computed watermarks can well drop below this default. The appended patch still allows that to be backwards compatible, though this construction sounds pretty weird to me.

Quoted 1 line

From 4ff44b36c3ca8ac0255700aaa8999e75efbf9598 Mon Sep 17 00:00:00 2001

From: thor <[email protected]>
Date: Sat, 7 Jun 2014 22:23:16 +0200
Subject: [PATCH] Added a min watermark level.

---
 drivers/gpu/drm/i915/i915_reg.h  |    1 +
 drivers/gpu/drm/i915/intel_drv.h |    1 +
 drivers/gpu/drm/i915/intel_pm.c  |   16 ++++++++++++++++
 3 files changed, 18 insertions(+)
drivers/gpu/drm/i915/i915_reg.h +1 -0
index 286f05c..442240b 100644
@@ -3897,6 +3897,7 @@ enum punit_power_well {
 #define I915_FIFO_SIZE		95
 #define I855GM_FIFO_SIZE	127 /* In cachelines */
 #define I830_FIFO_SIZE		95
+#define I830_MIN_WM		8
 
 #define VALLEYVIEW_MAX_WM	0xff
 #define G4X_MAX_WM		0x3f
drivers/gpu/drm/i915/intel_drv.h +1 -0
index 78d4124..16d2f68 100644
@@ -458,6 +458,7 @@ struct intel_plane {
 
 struct intel_watermark_params {
 	unsigned long fifo_size;
+	unsigned long min_wm;
 	unsigned long max_wm;
 	unsigned long default_wm;
 	unsigned long guard_size;
drivers/gpu/drm/i915/intel_pm.c +16 -0
index f83d1ff..ac8a832 100644
@@ -866,6 +866,7 @@ static int i845_get_fifo_size(struct drm_device *dev, int plane)
 /* Pineview has different values for various configs */
 static const struct intel_watermark_params pineview_display_wm = {
 	.fifo_size = PINEVIEW_DISPLAY_FIFO,
+	.min_wm = 0,
 	.max_wm = PINEVIEW_MAX_WM,
 	.default_wm = PINEVIEW_DFT_WM,
 	.guard_size = PINEVIEW_GUARD_WM,
@@ -873,6 +874,7 @@ static const struct intel_watermark_params pineview_display_wm = {
 };
 static const struct intel_watermark_params pineview_display_hplloff_wm = {
 	.fifo_size = PINEVIEW_DISPLAY_FIFO,
+	.min_wm = 0,
 	.max_wm = PINEVIEW_MAX_WM,
 	.default_wm = PINEVIEW_DFT_HPLLOFF_WM,
 	.guard_size = PINEVIEW_GUARD_WM,
@@ -880,6 +882,7 @@ static const struct intel_watermark_params pineview_display_hplloff_wm = {
 };
 static const struct intel_watermark_params pineview_cursor_wm = {
 	.fifo_size = PINEVIEW_CURSOR_FIFO,
+	.min_wm = 0,
 	.max_wm = PINEVIEW_CURSOR_MAX_WM,
 	.default_wm = PINEVIEW_CURSOR_DFT_WM,
 	.guard_size = PINEVIEW_CURSOR_GUARD_WM,
@@ -887,6 +890,7 @@ static const struct intel_watermark_params pineview_cursor_wm = {
 };
 static const struct intel_watermark_params pineview_cursor_hplloff_wm = {
 	.fifo_size = PINEVIEW_CURSOR_FIFO,
+	.min_wm = 0,
 	.max_wm = PINEVIEW_CURSOR_MAX_WM,
 	.default_wm = PINEVIEW_CURSOR_DFT_WM,
 	.guard_size = PINEVIEW_CURSOR_GUARD_WM,
@@ -894,6 +898,7 @@ static const struct intel_watermark_params pineview_cursor_hplloff_wm = {
 };
 static const struct intel_watermark_params g4x_wm_info = {
 	.fifo_size = G4X_FIFO_SIZE,
+	.min_wm = 0,
 	.max_wm = G4X_MAX_WM,
 	.default_wm = G4X_MAX_WM,
 	.guard_size = 2,
@@ -901,6 +906,7 @@ static const struct intel_watermark_params g4x_wm_info = {
 };
 static const struct intel_watermark_params g4x_cursor_wm_info = {
 	.fifo_size = I965_CURSOR_FIFO,
+	.min_wm = 0,
 	.max_wm = I965_CURSOR_MAX_WM,
 	.default_wm = I965_CURSOR_DFT_WM,
 	.guard_size = 2,
@@ -908,6 +914,7 @@ static const struct intel_watermark_params g4x_cursor_wm_info = {
 };
 static const struct intel_watermark_params valleyview_wm_info = {
 	.fifo_size = VALLEYVIEW_FIFO_SIZE,
+	.min_wm = 0,
 	.max_wm = VALLEYVIEW_MAX_WM,
 	.default_wm = VALLEYVIEW_MAX_WM,
 	.guard_size = 2,
@@ -915,6 +922,7 @@ static const struct intel_watermark_params valleyview_wm_info = {
 };
 static const struct intel_watermark_params valleyview_cursor_wm_info = {
 	.fifo_size = I965_CURSOR_FIFO,
+	.min_wm = 0,
 	.max_wm = VALLEYVIEW_CURSOR_MAX_WM,
 	.default_wm = I965_CURSOR_DFT_WM,
 	.guard_size = 2,
@@ -922,6 +930,7 @@ static const struct intel_watermark_params valleyview_cursor_wm_info = {
 };
 static const struct intel_watermark_params i965_cursor_wm_info = {
 	.fifo_size = I965_CURSOR_FIFO,
+	.min_wm = 0,
 	.max_wm = I965_CURSOR_MAX_WM,
 	.default_wm = I965_CURSOR_DFT_WM,
 	.guard_size = 2,
@@ -929,6 +938,7 @@ static const struct intel_watermark_params i965_cursor_wm_info = {
 };
 static const struct intel_watermark_params i945_wm_info = {
 	.fifo_size = I945_FIFO_SIZE,
+	.min_wm = 0,
 	.max_wm = I915_MAX_WM,
 	.default_wm = 1,
 	.guard_size = 2,
@@ -936,6 +946,7 @@ static const struct intel_watermark_params i945_wm_info = {
 };
 static const struct intel_watermark_params i915_wm_info = {
 	.fifo_size = I915_FIFO_SIZE,
+	.min_wm = 0,
 	.max_wm = I915_MAX_WM,
 	.default_wm = 1,
 	.guard_size = 2,
@@ -943,6 +954,7 @@ static const struct intel_watermark_params i915_wm_info = {
 };
 static const struct intel_watermark_params i830_wm_info = {
 	.fifo_size = I855GM_FIFO_SIZE,
+	.min_wm = I830_MIN_WM,
 	.max_wm = I915_MAX_WM,
 	.default_wm = 1,
 	.guard_size = 2,
@@ -950,6 +962,7 @@ static const struct intel_watermark_params i830_wm_info = {
 };
 static const struct intel_watermark_params i845_wm_info = {
 	.fifo_size = I830_FIFO_SIZE,
+	.min_wm = I830_MIN_WM,
 	.max_wm = I915_MAX_WM,
 	.default_wm = 1,
 	.guard_size = 2,
@@ -1003,6 +1016,9 @@ static unsigned long intel_calculate_wm(unsigned long clock_in_khz,
 		wm_size = wm->max_wm;
 	if (wm_size <= 0)
 		wm_size = wm->default_wm;
+	if (wm_size < (long)wm->min_wm)
+		wm_size = wm->min_wm;
+
 	return wm_size;
 }
 
Signature · 1 line
1.7.10.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

#27 lore raw

Re: [PATCH v2 09/15] drm/i915: Ignore VBT int_crt_support on 830M

In reply to [email protected]
Quoted 36 lines · On Fri, 6 Jun 2014 22:44:12 +0300 <[email protected]> wrote:

From: Ville Syrjälä <[email protected]>

My Fujitsu-Siemens Lifebook S6010 definitely has a VGA connector, but the VBT says different. Ignore the VBT for 830M since it seems such old machines would generally have a VGA connector.

This is a regression caused by:
commit 9c2a03c2a194c086949f25d332937ac8dc4d9f7e
Author: Jesse Barnes <[email protected]>
Date: Fri Apr 4 16:12:07 2014 -0700

drm/i915: use VBT to determine whether to enumerate the VGA port

While at it refactor the code a bit to be more pleasing to the eye.

v2: Move the check into intel_crt_init() (Daniel)

---
 drivers/gpu/drm/i915/intel_crt.c     | 22 ++++++++++++++++++++--
 drivers/gpu/drm/i915/intel_display.c |  3 +--
 2 files changed, 21 insertions(+), 4 deletions(-)
drivers/gpu/drm/i915/intel_crt.c +5 -0
index 5a045d3..5104e9f 100644
@@ -801,6 +801,25 @@ static const struct dmi_system_id intel_no_crt[] = {
 	{ }
 };
 
+static bool has_crt_support(struct drm_device *dev)
+{
+	struct drm_i915_private *dev_priv = dev->dev_private;
+
+	/* no hardware support whatsoever */

drivers/gpu/drm/i915/intel_crt.c static const struct dmi_system_id intel_no_crt[] = { · line 818

Quoted 10 lines
drivers/gpu/drm/i915/intel_crt.c +10 -0
+	if (IS_ULT(dev) || IS_CHERRYVIEW(dev))
+		return false;
+
+	/* Skip machines without VGA that falsely report hotplug events */
+	if (dmi_check_system(intel_no_crt))
+		return false;
+
+	/* Fujitsu-Siemens Lifebook S6010 VBT lies */
+	if (IS_I830(dev))
+		return true;

My old D945GNT board with a 945G and really old BIOS also has a VBT that lies about this.

Quoted 31 lines
drivers/gpu/drm/i915/intel_crt.c +5 -2
+
+	return dev_priv->vbt.int_crt_support;
+}
+
 void intel_crt_init(struct drm_device *dev)
 {
 	struct drm_connector *connector;
@@ -808,8 +827,7 @@ void intel_crt_init(struct drm_device *dev)
 	struct intel_connector *intel_connector;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 
-	/* Skip machines without VGA that falsely report hotplug events */
-	if (dmi_check_system(intel_no_crt))
+	if (!has_crt_support(dev))
 		return;
 
 	crt = kzalloc(sizeof(struct intel_crt), GFP_KERNEL);
drivers/gpu/drm/i915/intel_display.c +1 -2
index b5cbb28..1060caa 100644
@@ -11376,8 +11376,7 @@ static void intel_setup_outputs(struct drm_device *dev)
 
 	intel_lvds_init(dev);
 
-	if (!IS_ULT(dev) && !IS_CHERRYVIEW(dev) && dev_priv->vbt.int_crt_support)
-		intel_crt_init(dev);
+	intel_crt_init(dev);
 
 	if (HAS_DDI(dev)) {
 		int found;
#28 lore raw

Re: [PATCH v2 09/15] drm/i915: Ignore VBT int_crt_support on 830M

Quoted 6 lines · Bob Paauwe

drivers/gpu/drm/i915/intel_crt.c static const struct dmi_system_id intel_no_crt[] = { · line 818

Quoted 3 lines
drivers/gpu/drm/i915/intel_crt.c +3 -0
+     /* Fujitsu-Siemens Lifebook S6010 VBT lies */
+     if (IS_I830(dev))
+             return true;

My old D945GNT board with a 945G and really old BIOS also has a VBT that lies about this.

I guess someone needs to dig out vbt docs then and figure out what we've missed. Could be that the vga option is fairly new.

Jesse/Ben can you please look into that?
-Daniel

Signature · 3 lines
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
#29 lore raw

Re: [PATCH v2 09/15] drm/i915: Ignore VBT int_crt_support on 830M

Quoted 5 lines · On Sat, 7 Jun 2014 00:23:08 +0200 Daniel Vetter <[email protected]> wrote:
Quoted 4 lines · Bob Paauwe
Quoted 3 lines
drivers/gpu/drm/i915/intel_crt.c +3 -0
+     /* Fujitsu-Siemens Lifebook S6010 VBT lies */
+     if (IS_I830(dev))
+             return true;
Quoted 7 lines
Quoted 2 lines

My old D945GNT board with a 945G and really old BIOS also has a VBT that lies about this.

I guess someone needs to dig out vbt docs then and figure out what we've missed. Could be that the vga option is fairly new.

Jesse/Ben can you please look into that?

Yeah the meaning has changed over time, I'm trying to get the info from ancient times.

Signature · 1 line
Jesse Barnes, Intel Open Source Technology Center

A message that is not in the archive (sent off-list or not yet received): 2094_1402093395_53923F53_2094_10301_1_CAKMK7uGAnNP4VR9+zXd0KD5v0Vo=XuDS=NhRNFRqHKcae7T4XQ@mail.gmail.com

#31 lore raw

Re: [PATCH v2 09/15] drm/i915: Ignore VBT int_crt_support on 830M

Am 07.06.2014 00:23, schrieb Daniel Vetter:

Quoted 8 lines · Bob Paauwe
Quoted 5 lines

drivers/gpu/drm/i915/intel_crt.c static const struct dmi_system_id intel_no_crt[] = { · line 818

Quoted 3 lines
drivers/gpu/drm/i915/intel_crt.c +3 -0
+     /* Fujitsu-Siemens Lifebook S6010 VBT lies */
+     if (IS_I830(dev))
+             return true;

My old D945GNT board with a 945G and really old BIOS also has a VBT that lies about this.

I guess someone needs to dig out vbt docs then and figure out what we've missed. Could be that the vga option is fairly new.

Positive feedback on this one: WIth this patch, I can finally set VGA and internal display (DVI) to independent resolutions.

Thanks!

Greetings,
Thomas

maintainer
#32 lore raw

Re: [PATCH v2 09/15] drm/i915: Ignore VBT int_crt_support on 830M

In reply to [email protected]
Quoted 6 lines · On Fri, 06 Jun 2014, [email protected] wrote:

From: Ville Syrjälä <[email protected]>

My Fujitsu-Siemens Lifebook S6010 definitely has a VGA connector, but the VBT says different. Ignore the VBT for 830M since it seems such old machines would generally have a VGA connector.

Quoted 8 lines

This is a regression caused by:
commit 9c2a03c2a194c086949f25d332937ac8dc4d9f7e
Author: Jesse Barnes <[email protected]>
Date: Fri Apr 4 16:12:07 2014 -0700

drm/i915: use VBT to determine whether to enumerate the VGA port

While at it refactor the code a bit to be more pleasing to the eye.

Going through some old patches I spotted this one. It no longer applies, and the crt presence check has been changes. Do those changes fix the issue here as well?

Jani.

Quoted 70 lines

v2: Move the check into intel_crt_init() (Daniel)

---
 drivers/gpu/drm/i915/intel_crt.c     | 22 ++++++++++++++++++++--
 drivers/gpu/drm/i915/intel_display.c |  3 +--
 2 files changed, 21 insertions(+), 4 deletions(-)
drivers/gpu/drm/i915/intel_crt.c +20 -2
index 5a045d3..5104e9f 100644
@@ -801,6 +801,25 @@ static const struct dmi_system_id intel_no_crt[] = {
 	{ }
 };
 
+static bool has_crt_support(struct drm_device *dev)
+{
+	struct drm_i915_private *dev_priv = dev->dev_private;
+
+	/* no hardware support whatsoever */
+	if (IS_ULT(dev) || IS_CHERRYVIEW(dev))
+		return false;
+
+	/* Skip machines without VGA that falsely report hotplug events */
+	if (dmi_check_system(intel_no_crt))
+		return false;
+
+	/* Fujitsu-Siemens Lifebook S6010 VBT lies */
+	if (IS_I830(dev))
+		return true;
+
+	return dev_priv->vbt.int_crt_support;
+}
+
 void intel_crt_init(struct drm_device *dev)
 {
 	struct drm_connector *connector;
@@ -808,8 +827,7 @@ void intel_crt_init(struct drm_device *dev)
 	struct intel_connector *intel_connector;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 
-	/* Skip machines without VGA that falsely report hotplug events */
-	if (dmi_check_system(intel_no_crt))
+	if (!has_crt_support(dev))
 		return;
 
 	crt = kzalloc(sizeof(struct intel_crt), GFP_KERNEL);
drivers/gpu/drm/i915/intel_display.c +1 -2
index b5cbb28..1060caa 100644
@@ -11376,8 +11376,7 @@ static void intel_setup_outputs(struct drm_device *dev)
 
 	intel_lvds_init(dev);
 
-	if (!IS_ULT(dev) && !IS_CHERRYVIEW(dev) && dev_priv->vbt.int_crt_support)
-		intel_crt_init(dev);
+	intel_crt_init(dev);
 
 	if (HAS_DDI(dev)) {
 		int found;
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Signature · 5 lines
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#33 lore raw

Re: [PATCH v2 09/15] drm/i915: Ignore VBT int_crt_support on 830M

Quoted 12 lines · Jani Nikula
Quoted 11 lines · On Fri, 06 Jun 2014, [email protected] wrote:

From: Ville Syrjälä <[email protected]>

My Fujitsu-Siemens Lifebook S6010 definitely has a VGA connector, but the VBT says different. Ignore the VBT for 830M since it seems such old machines would generally have a VGA connector.

This is a regression caused by:
commit 9c2a03c2a194c086949f25d332937ac8dc4d9f7e
Author: Jesse Barnes <[email protected]>
Date: Fri Apr 4 16:12:07 2014 -0700

Quoted 7 lines
Quoted 3 lines

drm/i915: use VBT to determine whether to enumerate the VGA port

While at it refactor the code a bit to be more pleasing to the eye.

Going through some old patches I spotted this one. It no longer applies, and the crt presence check has been changes. Do those changes fix the issue here as well?

This was fixed in:

commit 84b4e042c4707bd1bf05094a51111403d680dc39

Author: Jesse Barnes <[email protected]>
Date:   Wed Jun 25 08:24:29 2014 -0700

drm/i915: only apply crt_present check on VLV

Quoted 77 lines

Jani.

Quoted 70 lines

v2: Move the check into intel_crt_init() (Daniel)

---
 drivers/gpu/drm/i915/intel_crt.c     | 22 ++++++++++++++++++++--
 drivers/gpu/drm/i915/intel_display.c |  3 +--
 2 files changed, 21 insertions(+), 4 deletions(-)
drivers/gpu/drm/i915/intel_crt.c +20 -2
index 5a045d3..5104e9f 100644
@@ -801,6 +801,25 @@ static const struct dmi_system_id intel_no_crt[] = {
 	{ }
 };
 
+static bool has_crt_support(struct drm_device *dev)
+{
+	struct drm_i915_private *dev_priv = dev->dev_private;
+
+	/* no hardware support whatsoever */
+	if (IS_ULT(dev) || IS_CHERRYVIEW(dev))
+		return false;
+
+	/* Skip machines without VGA that falsely report hotplug events */
+	if (dmi_check_system(intel_no_crt))
+		return false;
+
+	/* Fujitsu-Siemens Lifebook S6010 VBT lies */
+	if (IS_I830(dev))
+		return true;
+
+	return dev_priv->vbt.int_crt_support;
+}
+
 void intel_crt_init(struct drm_device *dev)
 {
 	struct drm_connector *connector;
@@ -808,8 +827,7 @@ void intel_crt_init(struct drm_device *dev)
 	struct intel_connector *intel_connector;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 
-	/* Skip machines without VGA that falsely report hotplug events */
-	if (dmi_check_system(intel_no_crt))
+	if (!has_crt_support(dev))
 		return;
 
 	crt = kzalloc(sizeof(struct intel_crt), GFP_KERNEL);
drivers/gpu/drm/i915/intel_display.c +1 -2
index b5cbb28..1060caa 100644
@@ -11376,8 +11376,7 @@ static void intel_setup_outputs(struct drm_device *dev)
 
 	intel_lvds_init(dev);
 
-	if (!IS_ULT(dev) && !IS_CHERRYVIEW(dev) && dev_priv->vbt.int_crt_support)
-		intel_crt_init(dev);
+	intel_crt_init(dev);
 
 	if (HAS_DDI(dev)) {
 		int found;
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Signature · 1 line
Jani Nikula, Intel Open Source Technology Center
Signature · 2 lines
Ville Syrjälä
Intel OTC
#34 lore raw

PATCH 10/15 drm/i915: Fix DVO 2x clock enable on 830M

In reply to [email protected]

From: Ville Syrjälä <[email protected]>

The spec says:
"For the correct operation of the muxed DVO pins (GDEVSELB/ I2Cdata, GIRDBY/I2CClk) and (GFRAMEB/DVI_Data, GTRDYB/DVI_Clk): Bit 31 (DPLL VCO Enable) and Bit 30 (2X Clock Enable) must be set to “1” in both the DPLL A Control Register (06014h-06017h) and DPLL B Control Register (06018h-0601Bh)."

The pipe A and B force quirks take care of DPLL_VCO_ENABLE, so we just need a bit of special care to handle DPLL_DVO_2X_MODE.

---
 drivers/gpu/drm/i915/i915_drv.h      |  3 +++
 drivers/gpu/drm/i915/intel_display.c | 47 +++++++++++++++++++++++++++++++++---
 2 files changed, 46 insertions(+), 4 deletions(-)
drivers/gpu/drm/i915/i915_drv.h +3 -0
index 8631fb3..559f098 100644
@@ -1537,6 +1537,9 @@ struct drm_i915_private {
 
 	struct i915_runtime_pm pm;
 
+	/* used to control DVO 2x clock enable on 830M */
+	uint8_t dvo_pipes;
+
 	/* Old dri1 support infrastructure, beware the dragons ya fools entering
 	 * here! */
 	struct i915_dri1_state dri1;
drivers/gpu/drm/i915/intel_display.c +43 -4

90 lines not on this page · raw message

Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#35 lore raw

PATCH 11/15 Revert "drm/i915: Nuke pipe A quirk on i830M"

In reply to [email protected]

From: Ville Syrjälä <[email protected]>

This reverts commit ac6696d3236bd61503f89a1a99680fd7894d5d53.

---
 drivers/gpu/drm/i915/intel_display.c | 3 +++
 1 file changed, 3 insertions(+)
drivers/gpu/drm/i915/intel_display.c +3 -0
index af944be..3b6eccd 100644
@@ -11934,6 +11934,9 @@ static struct intel_quirk intel_quirks[] = {
 	/* ThinkPad T60 needs pipe A force quirk (bug #16494) */
 	{ 0x2782, 0x17aa, 0x201a, quirk_pipea_force },
 
+	/* 830 needs to leave pipe A & dpll A up */
+	{ 0x3577, PCI_ANY_ID, PCI_ANY_ID, quirk_pipea_force },
+
 	/* Lenovo U160 cannot use SSC on LVDS */
 	{ 0x0046, 0x17aa, 0x3920, quirk_ssc_force_disable },
 
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#36 lore raw

PATCH 12/15 drm/i915: Add pipe B force quirk for 830M

In reply to [email protected]

From: Ville Syrjälä <[email protected]>

830M has problems when some of the pipes are disabled. Namely if a plane, DVO port etc. is currently assigned to a disabled pipe, it can't moved to the other pipe until the current pipe is also enabled. To keep things simple just leave both pipes running all the time.

Ideally I think should turn the pipes off if neither is active, and when either becomes active we enable both. But that would reuquire proper atomic modeset support, and probably a bit of extra care in the order things get enabled.

---
 drivers/gpu/drm/i915/i915_drv.h      |  1 +
 drivers/gpu/drm/i915/intel_display.c | 41 ++++++++++++++++++++++++------------
 2 files changed, 29 insertions(+), 13 deletions(-)
drivers/gpu/drm/i915/i915_drv.h +1 -0
index 559f098..10e9f68 100644
@@ -655,6 +655,7 @@ enum intel_sbi_destination {
 #define QUIRK_PIPEA_FORCE (1<<0)
 #define QUIRK_LVDS_SSC_DISABLE (1<<1)
 #define QUIRK_INVERT_BRIGHTNESS (1<<2)
+#define QUIRK_PIPEB_FORCE (1<<3)
 
 struct intel_fbdev;
 struct intel_fbc_work;
drivers/gpu/drm/i915/intel_display.c +28 -13

89 lines not on this page · raw message

Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#37 lore raw

PATCH 13/15 drm/i915: Eliminate rmw from .update_primary_plane()

In reply to [email protected]

From: Ville Syrjälä <[email protected]>

Move the entire DSPCNTR register setup into the .update_primary_plane() functions. That's where it belongs anyway and it'll also help 830M which has the extra problem that plane registers reads will return the value latched at the last vblank, not the value that was last written.

Also move DSPPOS and DSPSIZE setup there.

---
 drivers/gpu/drm/i915/intel_display.c | 110 +++++++++++------------------------
 1 file changed, 34 insertions(+), 76 deletions(-)
drivers/gpu/drm/i915/intel_display.c +34 -76
index 4f02464..74bbab9 100644
@@ -2431,20 +2431,31 @@ static void i9xx_update_primary_plane(struct drm_crtc *crtc,
 	struct drm_device *dev = crtc->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-	struct intel_framebuffer *intel_fb;
-	struct drm_i915_gem_object *obj;
+	struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb);
+	struct drm_i915_gem_object *obj = intel_fb->obj;
 	int plane = intel_crtc->plane;
 	unsigned long linear_offset;
 	u32 dspcntr;
-	u32 reg;
+	u32 reg = DSPCNTR(plane);
 
-	intel_fb = to_intel_framebuffer(fb);
-	obj = intel_fb->obj;
+	dspcntr = DISPPLANE_GAMMA_ENABLE;
+
+	if (intel_crtc->primary_enabled)
+		dspcntr |= DISPLAY_PLANE_ENABLE;
+
+	if (INTEL_INFO(dev)->gen < 4) {
+		if (intel_crtc->pipe == PIPE_B)
+			dspcntr |= DISPPLANE_SEL_PIPE_B;
+
+		/* pipesrc and dspsize control the size that is scaled from,
+		 * which should always be the user's requested size.
+		 */
+		I915_WRITE(DSPSIZE(plane),
+			   ((intel_crtc->config.pipe_src_h - 1) << 16) |
+			   (intel_crtc->config.pipe_src_w - 1));
+		I915_WRITE(DSPPOS(plane), 0);
+	}
 
-	reg = DSPCNTR(plane);
-	dspcntr = I915_READ(reg);
-	/* Mask out pixel format bits in case we change it */
-	dspcntr &= ~DISPPLANE_PIXFORMAT_MASK;
 	switch (fb->pixel_format) {
 	case DRM_FORMAT_C8:
 		dspcntr |= DISPPLANE_8BPP;
@@ -2476,12 +2487,9 @@ static void i9xx_update_primary_plane(struct drm_crtc *crtc,
 		BUG();
 	}
 
-	if (INTEL_INFO(dev)->gen >= 4) {
-		if (obj->tiling_mode != I915_TILING_NONE)
-			dspcntr |= DISPPLANE_TILED;
-		else
-			dspcntr &= ~DISPPLANE_TILED;
-	}
+	if (INTEL_INFO(dev)->gen >= 4 &&
+	    obj->tiling_mode != I915_TILING_NONE)
+		dspcntr |= DISPPLANE_TILED;
 
 	if (IS_G4X(dev))
 		dspcntr |= DISPPLANE_TRICKLE_FEED_DISABLE;
@@ -2521,20 +2529,21 @@ static void ironlake_update_primary_plane(struct drm_crtc *crtc,
 	struct drm_device *dev = crtc->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-	struct intel_framebuffer *intel_fb;
-	struct drm_i915_gem_object *obj;
+	struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb);
+	struct drm_i915_gem_object *obj = intel_fb->obj;
 	int plane = intel_crtc->plane;
 	unsigned long linear_offset;
 	u32 dspcntr;
-	u32 reg;
+	u32 reg = DSPCNTR(plane);
 
-	intel_fb = to_intel_framebuffer(fb);
-	obj = intel_fb->obj;
+	dspcntr = DISPPLANE_GAMMA_ENABLE;
+
+	if (intel_crtc->primary_enabled)
+		dspcntr |= DISPLAY_PLANE_ENABLE;
+
+	if (IS_HASWELL(dev) || IS_BROADWELL(dev))
+		dspcntr |= DISPPLANE_PIPE_CSC_ENABLE;
 
-	reg = DSPCNTR(plane);
-	dspcntr = I915_READ(reg);
-	/* Mask out pixel format bits in case we change it */
-	dspcntr &= ~DISPPLANE_PIXFORMAT_MASK;
 	switch (fb->pixel_format) {
 	case DRM_FORMAT_C8:
 		dspcntr |= DISPPLANE_8BPP;
@@ -2564,12 +2573,8 @@ static void ironlake_update_primary_plane(struct drm_crtc *crtc,
 
 	if (obj->tiling_mode != I915_TILING_NONE)
 		dspcntr |= DISPPLANE_TILED;
-	else
-		dspcntr &= ~DISPPLANE_TILED;
 
-	if (IS_HASWELL(dev) || IS_BROADWELL(dev))
-		dspcntr &= ~DISPPLANE_TRICKLE_FEED_DISABLE;
-	else
+	if (!IS_HASWELL(dev) && !IS_BROADWELL(dev))
 		dspcntr |= DISPPLANE_TRICKLE_FEED_DISABLE;
 
 	I915_WRITE(reg, dspcntr);
@@ -4000,7 +4005,6 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
-	enum plane plane = intel_crtc->plane;
 
 	WARN_ON(!crtc->enabled);
 
@@ -4022,10 +4026,6 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)
 
 	ironlake_set_pipeconf(crtc);
 
-	/* Set up the display plane register */
-	I915_WRITE(DSPCNTR(plane), DISPPLANE_GAMMA_ENABLE);
-	POSTING_READ(DSPCNTR(plane));
-
 	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
 					       crtc->x, crtc->y);
 
@@ -4113,7 +4113,6 @@ static void haswell_crtc_enable(struct drm_crtc *crtc)
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
-	enum plane plane = intel_crtc->plane;
 
 	WARN_ON(!crtc->enabled);
 
@@ -4134,10 +4133,6 @@ static void haswell_crtc_enable(struct drm_crtc *crtc)
 
 	intel_set_pipe_csc(crtc);
 
-	/* Set up the display plane register */
-	I915_WRITE(DSPCNTR(plane), DISPPLANE_GAMMA_ENABLE | DISPPLANE_PIPE_CSC_ENABLE);
-	POSTING_READ(DSPCNTR(plane));
-
 	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
 					       crtc->x, crtc->y);
 
@@ -4623,9 +4618,7 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc)
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
-	int plane = intel_crtc->plane;
 	bool is_dsi;
-	u32 dspcntr;
 
 	WARN_ON(!crtc->enabled);
 
@@ -4634,27 +4627,13 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc)
 
 	vlv_prepare_pll(intel_crtc);
 
-	/* Set up the display plane register */
-	dspcntr = DISPPLANE_GAMMA_ENABLE;
-
 	if (intel_crtc->config.has_dp_encoder)
 		intel_dp_set_m_n(intel_crtc);
 
 	intel_set_pipe_timings(intel_crtc);
 
-	/* pipesrc and dspsize control the size that is scaled from,
-	 * which should always be the user's requested size.
-	 */
-	I915_WRITE(DSPSIZE(plane),
-		   ((intel_crtc->config.pipe_src_h - 1) << 16) |
-		   (intel_crtc->config.pipe_src_w - 1));
-	I915_WRITE(DSPPOS(plane), 0);
-
 	i9xx_set_pipeconf(intel_crtc);
 
-	I915_WRITE(DSPCNTR(plane), dspcntr);
-	POSTING_READ(DSPCNTR(plane));
-
 	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
 					       crtc->x, crtc->y);
 
@@ -4711,8 +4690,6 @@ static void i9xx_crtc_enable(struct drm_crtc *crtc)
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
-	int plane = intel_crtc->plane;
-	u32 dspcntr;
 
 	WARN_ON(!crtc->enabled);
 
@@ -4721,32 +4698,13 @@ static void i9xx_crtc_enable(struct drm_crtc *crtc)
 
 	i9xx_set_pll_dividers(intel_crtc);
 
-	/* Set up the display plane register */
-	dspcntr = DISPPLANE_GAMMA_ENABLE;
-
-	if (pipe == 0)
-		dspcntr &= ~DISPPLANE_SEL_PIPE_MASK;
-	else
-		dspcntr |= DISPPLANE_SEL_PIPE_B;
-
 	if (intel_crtc->config.has_dp_encoder)
 		intel_dp_set_m_n(intel_crtc);
 
 	intel_set_pipe_timings(intel_crtc);
 
-	/* pipesrc and dspsize control the size that is scaled from,
-	 * which should always be the user's requested size.
-	 */
-	I915_WRITE(DSPSIZE(plane),
-		   ((intel_crtc->config.pipe_src_h - 1) << 16) |
-		   (intel_crtc->config.pipe_src_w - 1));
-	I915_WRITE(DSPPOS(plane), 0);
-
 	i9xx_set_pipeconf(intel_crtc);
 
-	I915_WRITE(DSPCNTR(plane), dspcntr);
-	POSTING_READ(DSPCNTR(plane));
-
 	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
 					       crtc->x, crtc->y);
 
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Reviewed-by on v1 13/15
#38 lore raw

Re: [PATCH 13/15] drm/i915: Eliminate rmw from .update_primary_plane()

Quoted 10 lines · On Thu, Jun 05, 2014 at 07:16:02PM +0300, [email protected] wrote:

From: Ville Syrjälä <[email protected]>

Move the entire DSPCNTR register setup into the .update_primary_plane() functions. That's where it belongs anyway and it'll also help 830M which has the extra problem that plane registers reads will return the value latched at the last vblank, not the value that was last written.

Also move DSPPOS and DSPSIZE setup there.

The code changes here look good to me. You may want to reword/clarify in the commit message exactly what "move entire register setup" means since I didn't really know what you meant by that phrase until I looked at the code and realized you were talking about starting to build the new value for DSPCNTR which had previously started in *_crtc_enable().

Looking at these *_update_primary_plane() functions makes me wonder whether it might help future review if we were to add another patch for these functions that reorders the bit setting to match the order they appear in the docs. Maybe also drop in a code comment in for each of the bits that are described in the PRM, but that we're purposely just leaving to a default value of 0 (180 rotation, async update, etc.) so that it's clear to the reader that we expect the implicit assignment of 0 rather than overlooking overlooking we should have been programming.

Anyway, the code changes here look good, so with or without my suggestions this is

Quoted 235 lines
---
 drivers/gpu/drm/i915/intel_display.c | 110 +++++++++++------------------------
 1 file changed, 34 insertions(+), 76 deletions(-)
drivers/gpu/drm/i915/intel_display.c +34 -76
index 4f02464..74bbab9 100644
@@ -2431,20 +2431,31 @@ static void i9xx_update_primary_plane(struct drm_crtc *crtc,
 	struct drm_device *dev = crtc->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-	struct intel_framebuffer *intel_fb;
-	struct drm_i915_gem_object *obj;
+	struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb);
+	struct drm_i915_gem_object *obj = intel_fb->obj;
 	int plane = intel_crtc->plane;
 	unsigned long linear_offset;
 	u32 dspcntr;
-	u32 reg;
+	u32 reg = DSPCNTR(plane);
 
-	intel_fb = to_intel_framebuffer(fb);
-	obj = intel_fb->obj;
+	dspcntr = DISPPLANE_GAMMA_ENABLE;
+
+	if (intel_crtc->primary_enabled)
+		dspcntr |= DISPLAY_PLANE_ENABLE;
+
+	if (INTEL_INFO(dev)->gen < 4) {
+		if (intel_crtc->pipe == PIPE_B)
+			dspcntr |= DISPPLANE_SEL_PIPE_B;
+
+		/* pipesrc and dspsize control the size that is scaled from,
+		 * which should always be the user's requested size.
+		 */
+		I915_WRITE(DSPSIZE(plane),
+			   ((intel_crtc->config.pipe_src_h - 1) << 16) |
+			   (intel_crtc->config.pipe_src_w - 1));
+		I915_WRITE(DSPPOS(plane), 0);
+	}
 
-	reg = DSPCNTR(plane);
-	dspcntr = I915_READ(reg);
-	/* Mask out pixel format bits in case we change it */
-	dspcntr &= ~DISPPLANE_PIXFORMAT_MASK;
 	switch (fb->pixel_format) {
 	case DRM_FORMAT_C8:
 		dspcntr |= DISPPLANE_8BPP;
@@ -2476,12 +2487,9 @@ static void i9xx_update_primary_plane(struct drm_crtc *crtc,
 		BUG();
 	}
 
-	if (INTEL_INFO(dev)->gen >= 4) {
-		if (obj->tiling_mode != I915_TILING_NONE)
-			dspcntr |= DISPPLANE_TILED;
-		else
-			dspcntr &= ~DISPPLANE_TILED;
-	}
+	if (INTEL_INFO(dev)->gen >= 4 &&
+	    obj->tiling_mode != I915_TILING_NONE)
+		dspcntr |= DISPPLANE_TILED;
 
 	if (IS_G4X(dev))
 		dspcntr |= DISPPLANE_TRICKLE_FEED_DISABLE;
@@ -2521,20 +2529,21 @@ static void ironlake_update_primary_plane(struct drm_crtc *crtc,
 	struct drm_device *dev = crtc->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-	struct intel_framebuffer *intel_fb;
-	struct drm_i915_gem_object *obj;
+	struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb);
+	struct drm_i915_gem_object *obj = intel_fb->obj;
 	int plane = intel_crtc->plane;
 	unsigned long linear_offset;
 	u32 dspcntr;
-	u32 reg;
+	u32 reg = DSPCNTR(plane);
 
-	intel_fb = to_intel_framebuffer(fb);
-	obj = intel_fb->obj;
+	dspcntr = DISPPLANE_GAMMA_ENABLE;
+
+	if (intel_crtc->primary_enabled)
+		dspcntr |= DISPLAY_PLANE_ENABLE;
+
+	if (IS_HASWELL(dev) || IS_BROADWELL(dev))
+		dspcntr |= DISPPLANE_PIPE_CSC_ENABLE;
 
-	reg = DSPCNTR(plane);
-	dspcntr = I915_READ(reg);
-	/* Mask out pixel format bits in case we change it */
-	dspcntr &= ~DISPPLANE_PIXFORMAT_MASK;
 	switch (fb->pixel_format) {
 	case DRM_FORMAT_C8:
 		dspcntr |= DISPPLANE_8BPP;
@@ -2564,12 +2573,8 @@ static void ironlake_update_primary_plane(struct drm_crtc *crtc,
 
 	if (obj->tiling_mode != I915_TILING_NONE)
 		dspcntr |= DISPPLANE_TILED;
-	else
-		dspcntr &= ~DISPPLANE_TILED;
 
-	if (IS_HASWELL(dev) || IS_BROADWELL(dev))
-		dspcntr &= ~DISPPLANE_TRICKLE_FEED_DISABLE;
-	else
+	if (!IS_HASWELL(dev) && !IS_BROADWELL(dev))
 		dspcntr |= DISPPLANE_TRICKLE_FEED_DISABLE;
 
 	I915_WRITE(reg, dspcntr);
@@ -4000,7 +4005,6 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
-	enum plane plane = intel_crtc->plane;
 
 	WARN_ON(!crtc->enabled);
 
@@ -4022,10 +4026,6 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)
 
 	ironlake_set_pipeconf(crtc);
 
-	/* Set up the display plane register */
-	I915_WRITE(DSPCNTR(plane), DISPPLANE_GAMMA_ENABLE);
-	POSTING_READ(DSPCNTR(plane));
-
 	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
 					       crtc->x, crtc->y);
 
@@ -4113,7 +4113,6 @@ static void haswell_crtc_enable(struct drm_crtc *crtc)
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
-	enum plane plane = intel_crtc->plane;
 
 	WARN_ON(!crtc->enabled);
 
@@ -4134,10 +4133,6 @@ static void haswell_crtc_enable(struct drm_crtc *crtc)
 
 	intel_set_pipe_csc(crtc);
 
-	/* Set up the display plane register */
-	I915_WRITE(DSPCNTR(plane), DISPPLANE_GAMMA_ENABLE | DISPPLANE_PIPE_CSC_ENABLE);
-	POSTING_READ(DSPCNTR(plane));
-
 	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
 					       crtc->x, crtc->y);
 
@@ -4623,9 +4618,7 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc)
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
-	int plane = intel_crtc->plane;
 	bool is_dsi;
-	u32 dspcntr;
 
 	WARN_ON(!crtc->enabled);
 
@@ -4634,27 +4627,13 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc)
 
 	vlv_prepare_pll(intel_crtc);
 
-	/* Set up the display plane register */
-	dspcntr = DISPPLANE_GAMMA_ENABLE;
-
 	if (intel_crtc->config.has_dp_encoder)
 		intel_dp_set_m_n(intel_crtc);
 
 	intel_set_pipe_timings(intel_crtc);
 
-	/* pipesrc and dspsize control the size that is scaled from,
-	 * which should always be the user's requested size.
-	 */
-	I915_WRITE(DSPSIZE(plane),
-		   ((intel_crtc->config.pipe_src_h - 1) << 16) |
-		   (intel_crtc->config.pipe_src_w - 1));
-	I915_WRITE(DSPPOS(plane), 0);
-
 	i9xx_set_pipeconf(intel_crtc);
 
-	I915_WRITE(DSPCNTR(plane), dspcntr);
-	POSTING_READ(DSPCNTR(plane));
-
 	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
 					       crtc->x, crtc->y);
 
@@ -4711,8 +4690,6 @@ static void i9xx_crtc_enable(struct drm_crtc *crtc)
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
-	int plane = intel_crtc->plane;
-	u32 dspcntr;
 
 	WARN_ON(!crtc->enabled);
 
@@ -4721,32 +4698,13 @@ static void i9xx_crtc_enable(struct drm_crtc *crtc)
 
 	i9xx_set_pll_dividers(intel_crtc);
 
-	/* Set up the display plane register */
-	dspcntr = DISPPLANE_GAMMA_ENABLE;
-
-	if (pipe == 0)
-		dspcntr &= ~DISPPLANE_SEL_PIPE_MASK;
-	else
-		dspcntr |= DISPPLANE_SEL_PIPE_B;
-
 	if (intel_crtc->config.has_dp_encoder)
 		intel_dp_set_m_n(intel_crtc);
 
 	intel_set_pipe_timings(intel_crtc);
 
-	/* pipesrc and dspsize control the size that is scaled from,
-	 * which should always be the user's requested size.
-	 */
-	I915_WRITE(DSPSIZE(plane),
-		   ((intel_crtc->config.pipe_src_h - 1) << 16) |
-		   (intel_crtc->config.pipe_src_w - 1));
-	I915_WRITE(DSPPOS(plane), 0);
-
 	i9xx_set_pipeconf(intel_crtc);
 
-	I915_WRITE(DSPCNTR(plane), dspcntr);
-	POSTING_READ(DSPCNTR(plane));
-
 	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
 					       crtc->x, crtc->y);
 
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Signature · 5 lines
Matt Roper
Graphics Software Engineer
IoTG Platform Enabling & Development
Intel Corporation
(916) 356-2795
#39 lore raw

PATCH v2 13/15 drm/i915: Eliminate rmw from .update_primary_plane()

In reply to [email protected]

From: Ville Syrjälä <[email protected]>

Move the entire DSPCNTR register setup into the .update_primary_plane() functions. That's where it belongs anyway and it'll also help 830M which has the extra problem that plane registers reads will return the value latched at the last vblank, not the value that was last written.

Also move DSPPOS and DSPSIZE setup there.

v2: Don't move variable initialization to avoid churn later

---
 drivers/gpu/drm/i915/intel_display.c | 100 +++++++++++------------------------
 1 file changed, 32 insertions(+), 68 deletions(-)
drivers/gpu/drm/i915/intel_display.c +32 -68
index 1c7ffe2..c048e31 100644
@@ -2436,15 +2436,29 @@ static void i9xx_update_primary_plane(struct drm_crtc *crtc,
 	int plane = intel_crtc->plane;
 	unsigned long linear_offset;
 	u32 dspcntr;
-	u32 reg;
+	u32 reg = DSPCNTR(plane);
 
 	intel_fb = to_intel_framebuffer(fb);
 	obj = intel_fb->obj;
 
-	reg = DSPCNTR(plane);
-	dspcntr = I915_READ(reg);
-	/* Mask out pixel format bits in case we change it */
-	dspcntr &= ~DISPPLANE_PIXFORMAT_MASK;
+	dspcntr = DISPPLANE_GAMMA_ENABLE;
+
+	if (intel_crtc->primary_enabled)
+		dspcntr |= DISPLAY_PLANE_ENABLE;
+
+	if (INTEL_INFO(dev)->gen < 4) {
+		if (intel_crtc->pipe == PIPE_B)
+			dspcntr |= DISPPLANE_SEL_PIPE_B;
+
+		/* pipesrc and dspsize control the size that is scaled from,
+		 * which should always be the user's requested size.
+		 */
+		I915_WRITE(DSPSIZE(plane),
+			   ((intel_crtc->config.pipe_src_h - 1) << 16) |
+			   (intel_crtc->config.pipe_src_w - 1));
+		I915_WRITE(DSPPOS(plane), 0);
+	}
+
 	switch (fb->pixel_format) {
 	case DRM_FORMAT_C8:
 		dspcntr |= DISPPLANE_8BPP;
@@ -2476,12 +2490,9 @@ static void i9xx_update_primary_plane(struct drm_crtc *crtc,
 		BUG();
 	}
 
-	if (INTEL_INFO(dev)->gen >= 4) {
-		if (obj->tiling_mode != I915_TILING_NONE)
-			dspcntr |= DISPPLANE_TILED;
-		else
-			dspcntr &= ~DISPPLANE_TILED;
-	}
+	if (INTEL_INFO(dev)->gen >= 4 &&
+	    obj->tiling_mode != I915_TILING_NONE)
+		dspcntr |= DISPPLANE_TILED;
 
 	if (IS_G4X(dev))
 		dspcntr |= DISPPLANE_TRICKLE_FEED_DISABLE;
@@ -2526,15 +2537,19 @@ static void ironlake_update_primary_plane(struct drm_crtc *crtc,
 	int plane = intel_crtc->plane;
 	unsigned long linear_offset;
 	u32 dspcntr;
-	u32 reg;
+	u32 reg = DSPCNTR(plane);
 
 	intel_fb = to_intel_framebuffer(fb);
 	obj = intel_fb->obj;
 
-	reg = DSPCNTR(plane);
-	dspcntr = I915_READ(reg);
-	/* Mask out pixel format bits in case we change it */
-	dspcntr &= ~DISPPLANE_PIXFORMAT_MASK;
+	dspcntr = DISPPLANE_GAMMA_ENABLE;
+
+	if (intel_crtc->primary_enabled)
+		dspcntr |= DISPLAY_PLANE_ENABLE;
+
+	if (IS_HASWELL(dev) || IS_BROADWELL(dev))
+		dspcntr |= DISPPLANE_PIPE_CSC_ENABLE;
+
 	switch (fb->pixel_format) {
 	case DRM_FORMAT_C8:
 		dspcntr |= DISPPLANE_8BPP;
@@ -2564,12 +2579,8 @@ static void ironlake_update_primary_plane(struct drm_crtc *crtc,
 
 	if (obj->tiling_mode != I915_TILING_NONE)
 		dspcntr |= DISPPLANE_TILED;
-	else
-		dspcntr &= ~DISPPLANE_TILED;
 
-	if (IS_HASWELL(dev) || IS_BROADWELL(dev))
-		dspcntr &= ~DISPPLANE_TRICKLE_FEED_DISABLE;
-	else
+	if (!IS_HASWELL(dev) && !IS_BROADWELL(dev))
 		dspcntr |= DISPPLANE_TRICKLE_FEED_DISABLE;
 
 	I915_WRITE(reg, dspcntr);
@@ -4000,7 +4011,6 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
-	enum plane plane = intel_crtc->plane;
 
 	WARN_ON(!crtc->enabled);
 
@@ -4022,10 +4032,6 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)
 
 	ironlake_set_pipeconf(crtc);
 
-	/* Set up the display plane register */
-	I915_WRITE(DSPCNTR(plane), DISPPLANE_GAMMA_ENABLE);
-	POSTING_READ(DSPCNTR(plane));
-
 	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
 					       crtc->x, crtc->y);
 
@@ -4113,7 +4119,6 @@ static void haswell_crtc_enable(struct drm_crtc *crtc)
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
-	enum plane plane = intel_crtc->plane;
 
 	WARN_ON(!crtc->enabled);
 
@@ -4134,10 +4139,6 @@ static void haswell_crtc_enable(struct drm_crtc *crtc)
 
 	intel_set_pipe_csc(crtc);
 
-	/* Set up the display plane register */
-	I915_WRITE(DSPCNTR(plane), DISPPLANE_GAMMA_ENABLE | DISPPLANE_PIPE_CSC_ENABLE);
-	POSTING_READ(DSPCNTR(plane));
-
 	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
 					       crtc->x, crtc->y);
 
@@ -4623,9 +4624,7 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc)
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
-	int plane = intel_crtc->plane;
 	bool is_dsi;
-	u32 dspcntr;
 
 	WARN_ON(!crtc->enabled);
 
@@ -4634,27 +4633,13 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc)
 
 	vlv_prepare_pll(intel_crtc);
 
-	/* Set up the display plane register */
-	dspcntr = DISPPLANE_GAMMA_ENABLE;
-
 	if (intel_crtc->config.has_dp_encoder)
 		intel_dp_set_m_n(intel_crtc);
 
 	intel_set_pipe_timings(intel_crtc);
 
-	/* pipesrc and dspsize control the size that is scaled from,
-	 * which should always be the user's requested size.
-	 */
-	I915_WRITE(DSPSIZE(plane),
-		   ((intel_crtc->config.pipe_src_h - 1) << 16) |
-		   (intel_crtc->config.pipe_src_w - 1));
-	I915_WRITE(DSPPOS(plane), 0);
-
 	i9xx_set_pipeconf(intel_crtc);
 
-	I915_WRITE(DSPCNTR(plane), dspcntr);
-	POSTING_READ(DSPCNTR(plane));
-
 	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
 					       crtc->x, crtc->y);
 
@@ -4711,8 +4696,6 @@ static void i9xx_crtc_enable(struct drm_crtc *crtc)
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
-	int plane = intel_crtc->plane;
-	u32 dspcntr;
 
 	WARN_ON(!crtc->enabled);
 
@@ -4721,32 +4704,13 @@ static void i9xx_crtc_enable(struct drm_crtc *crtc)
 
 	i9xx_set_pll_dividers(intel_crtc);
 
-	/* Set up the display plane register */
-	dspcntr = DISPPLANE_GAMMA_ENABLE;
-
-	if (pipe == 0)
-		dspcntr &= ~DISPPLANE_SEL_PIPE_MASK;
-	else
-		dspcntr |= DISPPLANE_SEL_PIPE_B;
-
 	if (intel_crtc->config.has_dp_encoder)
 		intel_dp_set_m_n(intel_crtc);
 
 	intel_set_pipe_timings(intel_crtc);
 
-	/* pipesrc and dspsize control the size that is scaled from,
-	 * which should always be the user's requested size.
-	 */
-	I915_WRITE(DSPSIZE(plane),
-		   ((intel_crtc->config.pipe_src_h - 1) << 16) |
-		   (intel_crtc->config.pipe_src_w - 1));
-	I915_WRITE(DSPPOS(plane), 0);
-
 	i9xx_set_pipeconf(intel_crtc);
 
-	I915_WRITE(DSPCNTR(plane), dspcntr);
-	POSTING_READ(DSPCNTR(plane));
-
 	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
 					       crtc->x, crtc->y);
 
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#40 lore raw

PATCH 14/15 drm/i915: Call .update_primary_plane in intel_{enable, disable}_primary_hw_plane()

In reply to [email protected]

From: Ville Syrjälä <[email protected]>

Make the intel_{enable,disable}_primary_hw_plane() simply call .update_primary_plane(), thus eliminating the rmw from these functions which should help the poor old 830M.

Now we can also remove the .update_primary_plane() from the .crtc_enable() hooks.

This also has the nice benefit of making primary planes a bit closer to the way we handle sprite planes during modesets.

---
 drivers/gpu/drm/i915/intel_display.c | 92 +++++++++++-------------------------
 1 file changed, 27 insertions(+), 65 deletions(-)
drivers/gpu/drm/i915/intel_display.c +27 -65
index 74bbab9..098017a 100644
@@ -2147,63 +2147,51 @@ void intel_flush_primary_plane(struct drm_i915_private *dev_priv,
 
 /**
  * intel_enable_primary_hw_plane - enable the primary plane on a given pipe
- * @dev_priv: i915 private structure
- * @plane: plane to enable
- * @pipe: pipe being fed
+ * @plane:  plane to be enabled
+ * @crtc: crtc for the plane
  *
- * Enable @plane on @pipe, making sure that @pipe is running first.
+ * Enable @plane on @crtc, making sure that the pipe is running first.
  */
-static void intel_enable_primary_hw_plane(struct drm_i915_private *dev_priv,
-					  enum plane plane, enum pipe pipe)
+static void intel_enable_primary_hw_plane(struct drm_plane *plane,
+					  struct drm_crtc *crtc)
 {
-	struct intel_crtc *intel_crtc =
-		to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]);
-	int reg;
-	u32 val;
+	struct drm_i915_private *dev_priv = crtc->dev->dev_private;
+	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 
 	/* If the pipe isn't enabled, we can't pump pixels and may hang */
-	assert_pipe_enabled(dev_priv, pipe);
+	assert_pipe_enabled(dev_priv, intel_crtc->pipe);
 
 	if (intel_crtc->primary_enabled)
 		return;
 
 	intel_crtc->primary_enabled = true;
 
-	reg = DSPCNTR(plane);
-	val = I915_READ(reg);
-	WARN_ON(val & DISPLAY_PLANE_ENABLE);
-
-	I915_WRITE(reg, val | DISPLAY_PLANE_ENABLE);
-	intel_flush_primary_plane(dev_priv, plane);
+	dev_priv->display.update_primary_plane(crtc, plane->fb,
+					       crtc->x, crtc->y);
 }
 
 /**
  * intel_disable_primary_hw_plane - disable the primary hardware plane
- * @dev_priv: i915 private structure
- * @plane: plane to disable
- * @pipe: pipe consuming the data
+ * @plane: plane to be disabled
+ * @crtc: crtc for the plane
  *
- * Disable @plane; should be an independent operation.
+ * Disable @plane on @crtc, making sure that the pipe is running first.
  */
-static void intel_disable_primary_hw_plane(struct drm_i915_private *dev_priv,
-					   enum plane plane, enum pipe pipe)
+static void intel_disable_primary_hw_plane(struct drm_plane *plane,
+					   struct drm_crtc *crtc)
 {
-	struct intel_crtc *intel_crtc =
-		to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]);
-	int reg;
-	u32 val;
+	struct drm_i915_private *dev_priv = crtc->dev->dev_private;
+	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+
+	assert_pipe_enabled(dev_priv, intel_crtc->pipe);
 
 	if (!intel_crtc->primary_enabled)
 		return;
 
 	intel_crtc->primary_enabled = false;
 
-	reg = DSPCNTR(plane);
-	val = I915_READ(reg);
-	WARN_ON((val & DISPLAY_PLANE_ENABLE) == 0);
-
-	I915_WRITE(reg, val & ~DISPLAY_PLANE_ENABLE);
-	intel_flush_primary_plane(dev_priv, plane);
+	dev_priv->display.update_primary_plane(crtc, plane->fb,
+					       crtc->x, crtc->y);
 }
 
 static bool need_vtd_wa(struct drm_device *dev)
@@ -3955,11 +3943,10 @@ static void intel_crtc_enable_planes(struct drm_crtc *crtc)
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	int pipe = intel_crtc->pipe;
-	int plane = intel_crtc->plane;
 
 	drm_vblank_on(dev, pipe);
 
-	intel_enable_primary_hw_plane(dev_priv, plane, pipe);
+	intel_enable_primary_hw_plane(crtc->primary, crtc);
 	intel_enable_planes(crtc);
 	/* The fixup needs to happen before cursor is enabled */
 	if (IS_G4X(dev))
@@ -3993,7 +3980,7 @@ static void intel_crtc_disable_planes(struct drm_crtc *crtc)
 	intel_crtc_dpms_overlay(intel_crtc, false);
 	intel_crtc_update_cursor(crtc, false);
 	intel_disable_planes(crtc);
-	intel_disable_primary_hw_plane(dev_priv, plane, pipe);
+	intel_disable_primary_hw_plane(crtc->primary, crtc);
 
 	drm_vblank_off(dev, pipe);
 }
@@ -4026,9 +4013,6 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)
 
 	ironlake_set_pipeconf(crtc);
 
-	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
-					       crtc->x, crtc->y);
-
 	intel_crtc->active = true;
 
 	intel_set_cpu_fifo_underrun_reporting(dev, pipe, true);
@@ -4133,9 +4117,6 @@ static void haswell_crtc_enable(struct drm_crtc *crtc)
 
 	intel_set_pipe_csc(crtc);
 
-	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
-					       crtc->x, crtc->y);
-
 	intel_crtc->active = true;
 
 	intel_set_cpu_fifo_underrun_reporting(dev, pipe, true);
@@ -4614,7 +4595,6 @@ static void valleyview_modeset_global_resources(struct drm_device *dev)
 static void valleyview_crtc_enable(struct drm_crtc *crtc)
 {
 	struct drm_device *dev = crtc->dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
@@ -4634,9 +4614,6 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc)
 
 	i9xx_set_pipeconf(intel_crtc);
 
-	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
-					       crtc->x, crtc->y);
-
 	intel_crtc->active = true;
 
 	intel_set_cpu_fifo_underrun_reporting(dev, pipe, true);
@@ -4686,7 +4663,6 @@ static void i9xx_set_pll_dividers(struct intel_crtc *crtc)
 static void i9xx_crtc_enable(struct drm_crtc *crtc)
 {
 	struct drm_device *dev = crtc->dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
@@ -4705,9 +4681,6 @@ static void i9xx_crtc_enable(struct drm_crtc *crtc)
 
 	i9xx_set_pipeconf(intel_crtc);
 
-	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
-					       crtc->x, crtc->y);
-
 	intel_crtc->active = true;
 
 	if (!IS_GEN2(dev))
@@ -10854,7 +10827,6 @@ static int intel_crtc_set_config(struct drm_mode_set *set)
 		ret = intel_set_mode(set->crtc, set->mode,
 				     set->x, set->y, set->fb);
 	} else if (config->fb_changed) {
-		struct drm_i915_private *dev_priv = dev->dev_private;
 		struct intel_crtc *intel_crtc = to_intel_crtc(set->crtc);
 
 		intel_crtc_wait_for_pending_flips(set->crtc);
@@ -10868,8 +10840,7 @@ static int intel_crtc_set_config(struct drm_mode_set *set)
 		 */
 		if (!intel_crtc->primary_enabled && ret == 0) {
 			WARN_ON(!intel_crtc->active);
-			intel_enable_primary_hw_plane(dev_priv, intel_crtc->plane,
-						      intel_crtc->pipe);
+			intel_enable_primary_hw_plane(set->crtc->primary, set->crtc);
 		}
 
 		/*
@@ -11024,9 +10995,6 @@ static void intel_shared_dpll_init(struct drm_device *dev)
 static int
 intel_primary_plane_disable(struct drm_plane *plane)
 {
-	struct drm_device *dev = plane->dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
-	struct intel_plane *intel_plane = to_intel_plane(plane);
 	struct intel_crtc *intel_crtc;
 
 	if (!plane->fb)
@@ -11049,8 +11017,7 @@ intel_primary_plane_disable(struct drm_plane *plane)
 		goto disable_unpin;
 
 	intel_crtc_wait_for_pending_flips(plane->crtc);
-	intel_disable_primary_hw_plane(dev_priv, intel_plane->plane,
-				       intel_plane->pipe);
+	intel_disable_primary_hw_plane(plane, plane->crtc);
 
 disable_unpin:
 	intel_unpin_fb_obj(to_intel_framebuffer(plane->fb)->obj);
@@ -11067,9 +11034,7 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc,
 			     uint32_t src_w, uint32_t src_h)
 {
 	struct drm_device *dev = crtc->dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-	struct intel_plane *intel_plane = to_intel_plane(plane);
 	struct drm_rect dest = {
 		/* integer pixels */
 		.x1 = crtc_x,
@@ -11143,9 +11108,7 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc,
 		}
 
 		if (intel_crtc->primary_enabled)
-			intel_disable_primary_hw_plane(dev_priv,
-						       intel_plane->plane,
-						       intel_plane->pipe);
+			intel_disable_primary_hw_plane(plane, crtc);
 
 
 		if (plane->fb != fb)
@@ -11160,8 +11123,7 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc,
 		return ret;
 
 	if (!intel_crtc->primary_enabled)
-		intel_enable_primary_hw_plane(dev_priv, intel_crtc->plane,
-					      intel_crtc->pipe);
+		intel_enable_primary_hw_plane(plane, crtc);
 
 	return 0;
 }
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Reviewed-by on v1 14/15
#41 lore raw

Re: [PATCH 14/15] drm/i915: Call .update_primary_plane in intel_{enable, disable}_primary_hw_plane()

Quoted 8 lines · On Thu, Jun 05, 2014 at 07:16:03PM +0300, [email protected] wrote:

From: Ville Syrjälä <[email protected]>

Make the intel_{enable,disable}_primary_hw_plane() simply call .update_primary_plane(), thus eliminating the rmw from these functions which should help the poor old 830M.

Now we can also remove the .update_primary_plane() from the .crtc_enable() hooks.

This is because intel_crtc_enable_planes() -> intel_enable_primary_hw_plane() takes care of it for us, right? Can you clarify that in the message? That wasn't immediately obvious from the context visible in the diff.

Quoted 4 lines

This also has the nice benefit of making primary planes a bit closer to the way we handle sprite planes during modesets.

On a somewhat related note, is there any reason not to call .update_primary_plane() at the end of the various sprite update functions in intel_sprite.c instead of calling intel_update_primary_plane() and intel_flush_primary_plane()? I find the name similarity between intel_update_primary_plane() and .update_primary_plane() confusing and it looks like we might be able to consolidate a bit there unless I'm overlooking something.

Matt

Quoted 247 lines
---
 drivers/gpu/drm/i915/intel_display.c | 92 +++++++++++-------------------------
 1 file changed, 27 insertions(+), 65 deletions(-)
drivers/gpu/drm/i915/intel_display.c +27 -65
index 74bbab9..098017a 100644
@@ -2147,63 +2147,51 @@ void intel_flush_primary_plane(struct drm_i915_private *dev_priv,
 
 /**
  * intel_enable_primary_hw_plane - enable the primary plane on a given pipe
- * @dev_priv: i915 private structure
- * @plane: plane to enable
- * @pipe: pipe being fed
+ * @plane:  plane to be enabled
+ * @crtc: crtc for the plane
  *
- * Enable @plane on @pipe, making sure that @pipe is running first.
+ * Enable @plane on @crtc, making sure that the pipe is running first.
  */
-static void intel_enable_primary_hw_plane(struct drm_i915_private *dev_priv,
-					  enum plane plane, enum pipe pipe)
+static void intel_enable_primary_hw_plane(struct drm_plane *plane,
+					  struct drm_crtc *crtc)
 {
-	struct intel_crtc *intel_crtc =
-		to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]);
-	int reg;
-	u32 val;
+	struct drm_i915_private *dev_priv = crtc->dev->dev_private;
+	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 
 	/* If the pipe isn't enabled, we can't pump pixels and may hang */
-	assert_pipe_enabled(dev_priv, pipe);
+	assert_pipe_enabled(dev_priv, intel_crtc->pipe);
 
 	if (intel_crtc->primary_enabled)
 		return;
 
 	intel_crtc->primary_enabled = true;
 
-	reg = DSPCNTR(plane);
-	val = I915_READ(reg);
-	WARN_ON(val & DISPLAY_PLANE_ENABLE);
-
-	I915_WRITE(reg, val | DISPLAY_PLANE_ENABLE);
-	intel_flush_primary_plane(dev_priv, plane);
+	dev_priv->display.update_primary_plane(crtc, plane->fb,
+					       crtc->x, crtc->y);
 }
 
 /**
  * intel_disable_primary_hw_plane - disable the primary hardware plane
- * @dev_priv: i915 private structure
- * @plane: plane to disable
- * @pipe: pipe consuming the data
+ * @plane: plane to be disabled
+ * @crtc: crtc for the plane
  *
- * Disable @plane; should be an independent operation.
+ * Disable @plane on @crtc, making sure that the pipe is running first.
  */
-static void intel_disable_primary_hw_plane(struct drm_i915_private *dev_priv,
-					   enum plane plane, enum pipe pipe)
+static void intel_disable_primary_hw_plane(struct drm_plane *plane,
+					   struct drm_crtc *crtc)
 {
-	struct intel_crtc *intel_crtc =
-		to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]);
-	int reg;
-	u32 val;
+	struct drm_i915_private *dev_priv = crtc->dev->dev_private;
+	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+
+	assert_pipe_enabled(dev_priv, intel_crtc->pipe);
 
 	if (!intel_crtc->primary_enabled)
 		return;
 
 	intel_crtc->primary_enabled = false;
 
-	reg = DSPCNTR(plane);
-	val = I915_READ(reg);
-	WARN_ON((val & DISPLAY_PLANE_ENABLE) == 0);
-
-	I915_WRITE(reg, val & ~DISPLAY_PLANE_ENABLE);
-	intel_flush_primary_plane(dev_priv, plane);
+	dev_priv->display.update_primary_plane(crtc, plane->fb,
+					       crtc->x, crtc->y);
 }
 
 static bool need_vtd_wa(struct drm_device *dev)
@@ -3955,11 +3943,10 @@ static void intel_crtc_enable_planes(struct drm_crtc *crtc)
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	int pipe = intel_crtc->pipe;
-	int plane = intel_crtc->plane;
 
 	drm_vblank_on(dev, pipe);
 
-	intel_enable_primary_hw_plane(dev_priv, plane, pipe);
+	intel_enable_primary_hw_plane(crtc->primary, crtc);
 	intel_enable_planes(crtc);
 	/* The fixup needs to happen before cursor is enabled */
 	if (IS_G4X(dev))
@@ -3993,7 +3980,7 @@ static void intel_crtc_disable_planes(struct drm_crtc *crtc)
 	intel_crtc_dpms_overlay(intel_crtc, false);
 	intel_crtc_update_cursor(crtc, false);
 	intel_disable_planes(crtc);
-	intel_disable_primary_hw_plane(dev_priv, plane, pipe);
+	intel_disable_primary_hw_plane(crtc->primary, crtc);
 
 	drm_vblank_off(dev, pipe);
 }
@@ -4026,9 +4013,6 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)
 
 	ironlake_set_pipeconf(crtc);
 
-	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
-					       crtc->x, crtc->y);
-
 	intel_crtc->active = true;
 
 	intel_set_cpu_fifo_underrun_reporting(dev, pipe, true);
@@ -4133,9 +4117,6 @@ static void haswell_crtc_enable(struct drm_crtc *crtc)
 
 	intel_set_pipe_csc(crtc);
 
-	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
-					       crtc->x, crtc->y);
-
 	intel_crtc->active = true;
 
 	intel_set_cpu_fifo_underrun_reporting(dev, pipe, true);
@@ -4614,7 +4595,6 @@ static void valleyview_modeset_global_resources(struct drm_device *dev)
 static void valleyview_crtc_enable(struct drm_crtc *crtc)
 {
 	struct drm_device *dev = crtc->dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
@@ -4634,9 +4614,6 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc)
 
 	i9xx_set_pipeconf(intel_crtc);
 
-	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
-					       crtc->x, crtc->y);
-
 	intel_crtc->active = true;
 
 	intel_set_cpu_fifo_underrun_reporting(dev, pipe, true);
@@ -4686,7 +4663,6 @@ static void i9xx_set_pll_dividers(struct intel_crtc *crtc)
 static void i9xx_crtc_enable(struct drm_crtc *crtc)
 {
 	struct drm_device *dev = crtc->dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
@@ -4705,9 +4681,6 @@ static void i9xx_crtc_enable(struct drm_crtc *crtc)
 
 	i9xx_set_pipeconf(intel_crtc);
 
-	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
-					       crtc->x, crtc->y);
-
 	intel_crtc->active = true;
 
 	if (!IS_GEN2(dev))
@@ -10854,7 +10827,6 @@ static int intel_crtc_set_config(struct drm_mode_set *set)
 		ret = intel_set_mode(set->crtc, set->mode,
 				     set->x, set->y, set->fb);
 	} else if (config->fb_changed) {
-		struct drm_i915_private *dev_priv = dev->dev_private;
 		struct intel_crtc *intel_crtc = to_intel_crtc(set->crtc);
 
 		intel_crtc_wait_for_pending_flips(set->crtc);
@@ -10868,8 +10840,7 @@ static int intel_crtc_set_config(struct drm_mode_set *set)
 		 */
 		if (!intel_crtc->primary_enabled && ret == 0) {
 			WARN_ON(!intel_crtc->active);
-			intel_enable_primary_hw_plane(dev_priv, intel_crtc->plane,
-						      intel_crtc->pipe);
+			intel_enable_primary_hw_plane(set->crtc->primary, set->crtc);
 		}
 
 		/*
@@ -11024,9 +10995,6 @@ static void intel_shared_dpll_init(struct drm_device *dev)
 static int
 intel_primary_plane_disable(struct drm_plane *plane)
 {
-	struct drm_device *dev = plane->dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
-	struct intel_plane *intel_plane = to_intel_plane(plane);
 	struct intel_crtc *intel_crtc;
 
 	if (!plane->fb)
@@ -11049,8 +11017,7 @@ intel_primary_plane_disable(struct drm_plane *plane)
 		goto disable_unpin;
 
 	intel_crtc_wait_for_pending_flips(plane->crtc);
-	intel_disable_primary_hw_plane(dev_priv, intel_plane->plane,
-				       intel_plane->pipe);
+	intel_disable_primary_hw_plane(plane, plane->crtc);
 
 disable_unpin:
 	intel_unpin_fb_obj(to_intel_framebuffer(plane->fb)->obj);
@@ -11067,9 +11034,7 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc,
 			     uint32_t src_w, uint32_t src_h)
 {
 	struct drm_device *dev = crtc->dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-	struct intel_plane *intel_plane = to_intel_plane(plane);
 	struct drm_rect dest = {
 		/* integer pixels */
 		.x1 = crtc_x,
@@ -11143,9 +11108,7 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc,
 		}
 
 		if (intel_crtc->primary_enabled)
-			intel_disable_primary_hw_plane(dev_priv,
-						       intel_plane->plane,
-						       intel_plane->pipe);
+			intel_disable_primary_hw_plane(plane, crtc);
 
 
 		if (plane->fb != fb)
@@ -11160,8 +11123,7 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc,
 		return ret;
 
 	if (!intel_crtc->primary_enabled)
-		intel_enable_primary_hw_plane(dev_priv, intel_crtc->plane,
-					      intel_crtc->pipe);
+		intel_enable_primary_hw_plane(plane, crtc);
 
 	return 0;
 }
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Signature · 5 lines
Matt Roper
Graphics Software Engineer
IoTG Platform Enabling & Development
Intel Corporation
(916) 356-2795
#42 lore raw

Re: [PATCH 14/15] drm/i915: Call .update_primary_plane in intel_{enable, disable}_primary_hw_plane()

Quoted 7 lines · Matt Roper
Quoted 6 lines · On Thu, Jun 05, 2014 at 07:16:03PM +0300, [email protected] wrote:

From: Ville Syrjälä <[email protected]>

Make the intel_{enable,disable}_primary_hw_plane() simply call .update_primary_plane(), thus eliminating the rmw from these functions which should help the poor old 830M.

Quoted 5 lines
Quoted 2 lines

Now we can also remove the .update_primary_plane() from the .crtc_enable() hooks.

This is because intel_crtc_enable_planes() -> intel_enable_primary_hw_plane() takes care of it for us, right?

Yes.

Quoted 3 lines

Can you
clarify that in the message? That wasn't immediately obvious from the context visible in the diff.

Can do.

Quoted 8 lines
Quoted 5 lines

This also has the nice benefit of making primary planes a bit closer to the way we handle sprite planes during modesets.

Quoted 7 lines

On a somewhat related note, is there any reason not to call .update_primary_plane() at the end of the various sprite update functions in intel_sprite.c instead of calling intel_update_primary_plane() and intel_flush_primary_plane()? I find the name similarity between intel_update_primary_plane() and .update_primary_plane() confusing and it looks like we might be able to consolidate a bit there unless I'm overlooking something.

I simply decided to leave the sprite code alone for now. Should probably just call the .update_primary_plane hook there as well. It doesn't seem too heavy to really compromise the atomic vblank evade thing. Though at some point we should really start building up the plane_config thing and then we should be able to minimize the amont of stuff we do in that section.

Quoted 258 lines

Matt

Quoted 247 lines
---
 drivers/gpu/drm/i915/intel_display.c | 92 +++++++++++-------------------------
 1 file changed, 27 insertions(+), 65 deletions(-)
drivers/gpu/drm/i915/intel_display.c +27 -65
index 74bbab9..098017a 100644
@@ -2147,63 +2147,51 @@ void intel_flush_primary_plane(struct drm_i915_private *dev_priv,
 
 /**
  * intel_enable_primary_hw_plane - enable the primary plane on a given pipe
- * @dev_priv: i915 private structure
- * @plane: plane to enable
- * @pipe: pipe being fed
+ * @plane:  plane to be enabled
+ * @crtc: crtc for the plane
  *
- * Enable @plane on @pipe, making sure that @pipe is running first.
+ * Enable @plane on @crtc, making sure that the pipe is running first.
  */
-static void intel_enable_primary_hw_plane(struct drm_i915_private *dev_priv,
-					  enum plane plane, enum pipe pipe)
+static void intel_enable_primary_hw_plane(struct drm_plane *plane,
+					  struct drm_crtc *crtc)
 {
-	struct intel_crtc *intel_crtc =
-		to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]);
-	int reg;
-	u32 val;
+	struct drm_i915_private *dev_priv = crtc->dev->dev_private;
+	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 
 	/* If the pipe isn't enabled, we can't pump pixels and may hang */
-	assert_pipe_enabled(dev_priv, pipe);
+	assert_pipe_enabled(dev_priv, intel_crtc->pipe);
 
 	if (intel_crtc->primary_enabled)
 		return;
 
 	intel_crtc->primary_enabled = true;
 
-	reg = DSPCNTR(plane);
-	val = I915_READ(reg);
-	WARN_ON(val & DISPLAY_PLANE_ENABLE);
-
-	I915_WRITE(reg, val | DISPLAY_PLANE_ENABLE);
-	intel_flush_primary_plane(dev_priv, plane);
+	dev_priv->display.update_primary_plane(crtc, plane->fb,
+					       crtc->x, crtc->y);
 }
 
 /**
  * intel_disable_primary_hw_plane - disable the primary hardware plane
- * @dev_priv: i915 private structure
- * @plane: plane to disable
- * @pipe: pipe consuming the data
+ * @plane: plane to be disabled
+ * @crtc: crtc for the plane
  *
- * Disable @plane; should be an independent operation.
+ * Disable @plane on @crtc, making sure that the pipe is running first.
  */
-static void intel_disable_primary_hw_plane(struct drm_i915_private *dev_priv,
-					   enum plane plane, enum pipe pipe)
+static void intel_disable_primary_hw_plane(struct drm_plane *plane,
+					   struct drm_crtc *crtc)
 {
-	struct intel_crtc *intel_crtc =
-		to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]);
-	int reg;
-	u32 val;
+	struct drm_i915_private *dev_priv = crtc->dev->dev_private;
+	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+
+	assert_pipe_enabled(dev_priv, intel_crtc->pipe);
 
 	if (!intel_crtc->primary_enabled)
 		return;
 
 	intel_crtc->primary_enabled = false;
 
-	reg = DSPCNTR(plane);
-	val = I915_READ(reg);
-	WARN_ON((val & DISPLAY_PLANE_ENABLE) == 0);
-
-	I915_WRITE(reg, val & ~DISPLAY_PLANE_ENABLE);
-	intel_flush_primary_plane(dev_priv, plane);
+	dev_priv->display.update_primary_plane(crtc, plane->fb,
+					       crtc->x, crtc->y);
 }
 
 static bool need_vtd_wa(struct drm_device *dev)
@@ -3955,11 +3943,10 @@ static void intel_crtc_enable_planes(struct drm_crtc *crtc)
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	int pipe = intel_crtc->pipe;
-	int plane = intel_crtc->plane;
 
 	drm_vblank_on(dev, pipe);
 
-	intel_enable_primary_hw_plane(dev_priv, plane, pipe);
+	intel_enable_primary_hw_plane(crtc->primary, crtc);
 	intel_enable_planes(crtc);
 	/* The fixup needs to happen before cursor is enabled */
 	if (IS_G4X(dev))
@@ -3993,7 +3980,7 @@ static void intel_crtc_disable_planes(struct drm_crtc *crtc)
 	intel_crtc_dpms_overlay(intel_crtc, false);
 	intel_crtc_update_cursor(crtc, false);
 	intel_disable_planes(crtc);
-	intel_disable_primary_hw_plane(dev_priv, plane, pipe);
+	intel_disable_primary_hw_plane(crtc->primary, crtc);
 
 	drm_vblank_off(dev, pipe);
 }
@@ -4026,9 +4013,6 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)
 
 	ironlake_set_pipeconf(crtc);
 
-	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
-					       crtc->x, crtc->y);
-
 	intel_crtc->active = true;
 
 	intel_set_cpu_fifo_underrun_reporting(dev, pipe, true);
@@ -4133,9 +4117,6 @@ static void haswell_crtc_enable(struct drm_crtc *crtc)
 
 	intel_set_pipe_csc(crtc);
 
-	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
-					       crtc->x, crtc->y);
-
 	intel_crtc->active = true;
 
 	intel_set_cpu_fifo_underrun_reporting(dev, pipe, true);
@@ -4614,7 +4595,6 @@ static void valleyview_modeset_global_resources(struct drm_device *dev)
 static void valleyview_crtc_enable(struct drm_crtc *crtc)
 {
 	struct drm_device *dev = crtc->dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
@@ -4634,9 +4614,6 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc)
 
 	i9xx_set_pipeconf(intel_crtc);
 
-	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
-					       crtc->x, crtc->y);
-
 	intel_crtc->active = true;
 
 	intel_set_cpu_fifo_underrun_reporting(dev, pipe, true);
@@ -4686,7 +4663,6 @@ static void i9xx_set_pll_dividers(struct intel_crtc *crtc)
 static void i9xx_crtc_enable(struct drm_crtc *crtc)
 {
 	struct drm_device *dev = crtc->dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
@@ -4705,9 +4681,6 @@ static void i9xx_crtc_enable(struct drm_crtc *crtc)
 
 	i9xx_set_pipeconf(intel_crtc);
 
-	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
-					       crtc->x, crtc->y);
-
 	intel_crtc->active = true;
 
 	if (!IS_GEN2(dev))
@@ -10854,7 +10827,6 @@ static int intel_crtc_set_config(struct drm_mode_set *set)
 		ret = intel_set_mode(set->crtc, set->mode,
 				     set->x, set->y, set->fb);
 	} else if (config->fb_changed) {
-		struct drm_i915_private *dev_priv = dev->dev_private;
 		struct intel_crtc *intel_crtc = to_intel_crtc(set->crtc);
 
 		intel_crtc_wait_for_pending_flips(set->crtc);
@@ -10868,8 +10840,7 @@ static int intel_crtc_set_config(struct drm_mode_set *set)
 		 */
 		if (!intel_crtc->primary_enabled && ret == 0) {
 			WARN_ON(!intel_crtc->active);
-			intel_enable_primary_hw_plane(dev_priv, intel_crtc->plane,
-						      intel_crtc->pipe);
+			intel_enable_primary_hw_plane(set->crtc->primary, set->crtc);
 		}
 
 		/*
@@ -11024,9 +10995,6 @@ static void intel_shared_dpll_init(struct drm_device *dev)
 static int
 intel_primary_plane_disable(struct drm_plane *plane)
 {
-	struct drm_device *dev = plane->dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
-	struct intel_plane *intel_plane = to_intel_plane(plane);
 	struct intel_crtc *intel_crtc;
 
 	if (!plane->fb)
@@ -11049,8 +11017,7 @@ intel_primary_plane_disable(struct drm_plane *plane)
 		goto disable_unpin;
 
 	intel_crtc_wait_for_pending_flips(plane->crtc);
-	intel_disable_primary_hw_plane(dev_priv, intel_plane->plane,
-				       intel_plane->pipe);
+	intel_disable_primary_hw_plane(plane, plane->crtc);
 
 disable_unpin:
 	intel_unpin_fb_obj(to_intel_framebuffer(plane->fb)->obj);
@@ -11067,9 +11034,7 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc,
 			     uint32_t src_w, uint32_t src_h)
 {
 	struct drm_device *dev = crtc->dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-	struct intel_plane *intel_plane = to_intel_plane(plane);
 	struct drm_rect dest = {
 		/* integer pixels */
 		.x1 = crtc_x,
@@ -11143,9 +11108,7 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc,
 		}
 
 		if (intel_crtc->primary_enabled)
-			intel_disable_primary_hw_plane(dev_priv,
-						       intel_plane->plane,
-						       intel_plane->pipe);
+			intel_disable_primary_hw_plane(plane, crtc);
 
 
 		if (plane->fb != fb)
@@ -11160,8 +11123,7 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc,
 		return ret;
 
 	if (!intel_crtc->primary_enabled)
-		intel_enable_primary_hw_plane(dev_priv, intel_crtc->plane,
-					      intel_crtc->pipe);
+		intel_enable_primary_hw_plane(plane, crtc);
 
 	return 0;
 }
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Signature · 5 lines
Matt Roper
Graphics Software Engineer
IoTG Platform Enabling & Development
Intel Corporation
(916) 356-2795
Signature · 2 lines
Ville Syrjälä
Intel OTC
#43 lore raw

PATCH v2 14/15 drm/i915: Call .update_primary_plane in intel_{enable, disable}_primary_hw_plane()

In reply to Matt Roper

From: Ville Syrjälä <[email protected]>

Make the intel_{enable,disable}_primary_hw_plane() simply call .update_primary_plane(), thus eliminating the rmw from these functions which should help the poor old 830M.

Now we can also remove the .update_primary_plane() from the .crtc_enable() hooks because we end up calling it via intel_crtc_enable_planes()->intel_enable_primary_hw_plane().

This also has the nice benefit of making primary planes a bit closer to the way we handle sprite planes during modesets.

v2: Just write 0 to DSPCNTR and DSPSURF/DSPADDR if the plane is (to be)
disabled. Quicker, and more importantly avoids an oops when fb==NULL due to BIOS fb takeover failure.
Pimp the commit message a bit (Matt)

---
 drivers/gpu/drm/i915/intel_display.c | 107 ++++++++++++++---------------------
 1 file changed, 42 insertions(+), 65 deletions(-)
drivers/gpu/drm/i915/intel_display.c +42 -65
index e14e71b..5d652da 100644
@@ -2147,63 +2147,51 @@ void intel_flush_primary_plane(struct drm_i915_private *dev_priv,
 
 /**
  * intel_enable_primary_hw_plane - enable the primary plane on a given pipe
- * @dev_priv: i915 private structure
- * @plane: plane to enable
- * @pipe: pipe being fed
+ * @plane:  plane to be enabled
+ * @crtc: crtc for the plane
  *
- * Enable @plane on @pipe, making sure that @pipe is running first.
+ * Enable @plane on @crtc, making sure that the pipe is running first.
  */
-static void intel_enable_primary_hw_plane(struct drm_i915_private *dev_priv,
-					  enum plane plane, enum pipe pipe)
+static void intel_enable_primary_hw_plane(struct drm_plane *plane,
+					  struct drm_crtc *crtc)
 {
-	struct intel_crtc *intel_crtc =
-		to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]);
-	int reg;
-	u32 val;
+	struct drm_i915_private *dev_priv = crtc->dev->dev_private;
+	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 
 	/* If the pipe isn't enabled, we can't pump pixels and may hang */
-	assert_pipe_enabled(dev_priv, pipe);
+	assert_pipe_enabled(dev_priv, intel_crtc->pipe);
 
 	if (intel_crtc->primary_enabled)
 		return;
 
 	intel_crtc->primary_enabled = true;
 
-	reg = DSPCNTR(plane);
-	val = I915_READ(reg);
-	WARN_ON(val & DISPLAY_PLANE_ENABLE);
-
-	I915_WRITE(reg, val | DISPLAY_PLANE_ENABLE);
-	intel_flush_primary_plane(dev_priv, plane);
+	dev_priv->display.update_primary_plane(crtc, plane->fb,
+					       crtc->x, crtc->y);
 }
 
 /**
  * intel_disable_primary_hw_plane - disable the primary hardware plane
- * @dev_priv: i915 private structure
- * @plane: plane to disable
- * @pipe: pipe consuming the data
+ * @plane: plane to be disabled
+ * @crtc: crtc for the plane
  *
- * Disable @plane; should be an independent operation.
+ * Disable @plane on @crtc, making sure that the pipe is running first.
  */
-static void intel_disable_primary_hw_plane(struct drm_i915_private *dev_priv,
-					   enum plane plane, enum pipe pipe)
+static void intel_disable_primary_hw_plane(struct drm_plane *plane,
+					   struct drm_crtc *crtc)
 {
-	struct intel_crtc *intel_crtc =
-		to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]);
-	int reg;
-	u32 val;
+	struct drm_i915_private *dev_priv = crtc->dev->dev_private;
+	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+
+	assert_pipe_enabled(dev_priv, intel_crtc->pipe);
 
 	if (!intel_crtc->primary_enabled)
 		return;
 
 	intel_crtc->primary_enabled = false;
 
-	reg = DSPCNTR(plane);
-	val = I915_READ(reg);
-	WARN_ON((val & DISPLAY_PLANE_ENABLE) == 0);
-
-	I915_WRITE(reg, val & ~DISPLAY_PLANE_ENABLE);
-	intel_flush_primary_plane(dev_priv, plane);
+	dev_priv->display.update_primary_plane(crtc, plane->fb,
+					       crtc->x, crtc->y);
 }
 
 static bool need_vtd_wa(struct drm_device *dev)
@@ -2438,6 +2426,15 @@ static void i9xx_update_primary_plane(struct drm_crtc *crtc,
 	u32 dspcntr;
 	u32 reg = DSPCNTR(plane);
 
+	if (!intel_crtc->primary_enabled) {
+		I915_WRITE(reg, 0);
+		if (INTEL_INFO(dev)->gen >= 4)
+			I915_WRITE(DSPSURF(plane), 0);
+		else
+			I915_WRITE(DSPADDR(plane), 0);
+		return;
+	}
+
 	intel_fb = to_intel_framebuffer(fb);
 	obj = intel_fb->obj;
 
@@ -2539,6 +2536,12 @@ static void ironlake_update_primary_plane(struct drm_crtc *crtc,
 	u32 dspcntr;
 	u32 reg = DSPCNTR(plane);
 
+	if (!intel_crtc->primary_enabled) {
+		I915_WRITE(reg, 0);
+		I915_WRITE(DSPSURF(plane), 0);
+		return;
+	}
+
 	intel_fb = to_intel_framebuffer(fb);
 	obj = intel_fb->obj;
 
@@ -3961,11 +3964,10 @@ static void intel_crtc_enable_planes(struct drm_crtc *crtc)
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	int pipe = intel_crtc->pipe;
-	int plane = intel_crtc->plane;
 
 	drm_vblank_on(dev, pipe);
 
-	intel_enable_primary_hw_plane(dev_priv, plane, pipe);
+	intel_enable_primary_hw_plane(crtc->primary, crtc);
 	intel_enable_planes(crtc);
 	/* The fixup needs to happen before cursor is enabled */
 	if (IS_G4X(dev))
@@ -3999,7 +4001,7 @@ static void intel_crtc_disable_planes(struct drm_crtc *crtc)
 	intel_crtc_dpms_overlay(intel_crtc, false);
 	intel_crtc_update_cursor(crtc, false);
 	intel_disable_planes(crtc);
-	intel_disable_primary_hw_plane(dev_priv, plane, pipe);
+	intel_disable_primary_hw_plane(crtc->primary, crtc);
 
 	drm_vblank_off(dev, pipe);
 }
@@ -4032,9 +4034,6 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)
 
 	ironlake_set_pipeconf(crtc);
 
-	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
-					       crtc->x, crtc->y);
-
 	intel_crtc->active = true;
 
 	intel_set_cpu_fifo_underrun_reporting(dev, pipe, true);
@@ -4139,9 +4138,6 @@ static void haswell_crtc_enable(struct drm_crtc *crtc)
 
 	intel_set_pipe_csc(crtc);
 
-	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
-					       crtc->x, crtc->y);
-
 	intel_crtc->active = true;
 
 	intel_set_cpu_fifo_underrun_reporting(dev, pipe, true);
@@ -4620,7 +4616,6 @@ static void valleyview_modeset_global_resources(struct drm_device *dev)
 static void valleyview_crtc_enable(struct drm_crtc *crtc)
 {
 	struct drm_device *dev = crtc->dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
@@ -4640,9 +4635,6 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc)
 
 	i9xx_set_pipeconf(intel_crtc);
 
-	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
-					       crtc->x, crtc->y);
-
 	intel_crtc->active = true;
 
 	intel_set_cpu_fifo_underrun_reporting(dev, pipe, true);
@@ -4692,7 +4684,6 @@ static void i9xx_set_pll_dividers(struct intel_crtc *crtc)
 static void i9xx_crtc_enable(struct drm_crtc *crtc)
 {
 	struct drm_device *dev = crtc->dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
 	int pipe = intel_crtc->pipe;
@@ -4711,9 +4702,6 @@ static void i9xx_crtc_enable(struct drm_crtc *crtc)
 
 	i9xx_set_pipeconf(intel_crtc);
 
-	dev_priv->display.update_primary_plane(crtc, crtc->primary->fb,
-					       crtc->x, crtc->y);
-
 	intel_crtc->active = true;
 
 	if (!IS_GEN2(dev))
@@ -10860,7 +10848,6 @@ static int intel_crtc_set_config(struct drm_mode_set *set)
 		ret = intel_set_mode(set->crtc, set->mode,
 				     set->x, set->y, set->fb);
 	} else if (config->fb_changed) {
-		struct drm_i915_private *dev_priv = dev->dev_private;
 		struct intel_crtc *intel_crtc = to_intel_crtc(set->crtc);
 
 		intel_crtc_wait_for_pending_flips(set->crtc);
@@ -10874,8 +10861,7 @@ static int intel_crtc_set_config(struct drm_mode_set *set)
 		 */
 		if (!intel_crtc->primary_enabled && ret == 0) {
 			WARN_ON(!intel_crtc->active);
-			intel_enable_primary_hw_plane(dev_priv, intel_crtc->plane,
-						      intel_crtc->pipe);
+			intel_enable_primary_hw_plane(set->crtc->primary, set->crtc);
 		}
 
 		/*
@@ -11030,9 +11016,6 @@ static void intel_shared_dpll_init(struct drm_device *dev)
 static int
 intel_primary_plane_disable(struct drm_plane *plane)
 {
-	struct drm_device *dev = plane->dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
-	struct intel_plane *intel_plane = to_intel_plane(plane);
 	struct intel_crtc *intel_crtc;
 
 	if (!plane->fb)
@@ -11055,8 +11038,7 @@ intel_primary_plane_disable(struct drm_plane *plane)
 		goto disable_unpin;
 
 	intel_crtc_wait_for_pending_flips(plane->crtc);
-	intel_disable_primary_hw_plane(dev_priv, intel_plane->plane,
-				       intel_plane->pipe);
+	intel_disable_primary_hw_plane(plane, plane->crtc);
 
 disable_unpin:
 	intel_unpin_fb_obj(to_intel_framebuffer(plane->fb)->obj);
@@ -11073,9 +11055,7 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc,
 			     uint32_t src_w, uint32_t src_h)
 {
 	struct drm_device *dev = crtc->dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-	struct intel_plane *intel_plane = to_intel_plane(plane);
 	struct drm_rect dest = {
 		/* integer pixels */
 		.x1 = crtc_x,
@@ -11149,9 +11129,7 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc,
 		}
 
 		if (intel_crtc->primary_enabled)
-			intel_disable_primary_hw_plane(dev_priv,
-						       intel_plane->plane,
-						       intel_plane->pipe);
+			intel_disable_primary_hw_plane(plane, crtc);
 
 
 		if (plane->fb != fb)
@@ -11166,8 +11144,7 @@ intel_primary_plane_setplane(struct drm_plane *plane, struct drm_crtc *crtc,
 		return ret;
 
 	if (!intel_crtc->primary_enabled)
-		intel_enable_primary_hw_plane(dev_priv, intel_crtc->plane,
-					      intel_crtc->pipe);
+		intel_enable_primary_hw_plane(plane, crtc);
 
 	return 0;
 }
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#44 lore raw

PATCH 15/15 drm/i915: Check pixel clock in ns2501 mode_valid hook

In reply to [email protected]

From: Ville Syrjälä <[email protected]>

The vbt on my Fujitsu-Siemens Lifebook S6010 provides two 800x600 modes, 60Hz and 56Hz. The magic register values we have correspond to the 60Hz mode, and as I don't know how one would trick the VGA BIOS to set up the 56Hz mode we can't get the magic values for the orther mode. So when checking whether a mode is valid also check the pixel clock so that we filter out the 56Hz variant.

---
 drivers/gpu/drm/i915/dvo_ns2501.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/gpu/drm/i915/dvo_ns2501.c +3 -3
index b278571..64103cb 100644
@@ -515,9 +515,9 @@ static enum drm_mode_status ns2501_mode_valid(struct intel_dvo_device *dvo,
 	 * of the panel in here so we could always accept it
 	 * by disabling the scaler.
 	 */
-	if ((mode->hdisplay == 800 && mode->vdisplay == 600) ||
-	    (mode->hdisplay == 640 && mode->vdisplay == 480) ||
-	    (mode->hdisplay == 1024 && mode->vdisplay == 768)) {
+	if ((mode->hdisplay == 640 && mode->vdisplay == 480 && mode->clock == 25175) ||
+	    (mode->hdisplay == 800 && mode->vdisplay == 600 && mode->clock == 40000) ||
+	    (mode->hdisplay == 1024 && mode->vdisplay == 768 && mode->clock == 65000)) {
 		return MODE_OK;
 	} else {
 		return MODE_ONE_SIZE;	/* Is this a reasonable error? */
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#45 lore raw

[PATCH 16/15] drm/i915: Pass intel_crtc to intel_disable_pipe() and intel_wait_for_pipe_off()

In reply to [email protected]

From: Ville Syrjälä <[email protected]>

Just pass the intel_crtc around instead of dev_priv+pipe.

Also make intel_wait_for_pipe_off() static since it's only used in intel_display.c.

---
 drivers/gpu/drm/i915/intel_display.c | 37 +++++++++++++++++-------------------
 drivers/gpu/drm/i915/intel_drv.h     |  1 -
 2 files changed, 17 insertions(+), 21 deletions(-)
drivers/gpu/drm/i915/intel_display.c +17 -20
index 246e21e..fdda2cf 100644
@@ -950,8 +950,7 @@ static bool pipe_dsl_stopped(struct drm_device *dev, enum pipe pipe)
 
 /*
  * intel_wait_for_pipe_off - wait for pipe to turn off
- * @dev: drm device
- * @pipe: pipe to wait for
+ * @crtc: crtc whose pipe to wait for
  *
  * After disabling a pipe, we can't wait for vblank in the usual way,
  * spinning on the vblank interrupt status bit, since we won't actually
@@ -965,11 +964,12 @@ static bool pipe_dsl_stopped(struct drm_device *dev, enum pipe pipe)
  *   ends up stopping at the start of the next frame).
  *
  */
-void intel_wait_for_pipe_off(struct drm_device *dev, int pipe)
+static void intel_wait_for_pipe_off(struct intel_crtc *crtc)
 {
+	struct drm_device *dev = crtc->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv,
-								      pipe);
+	enum transcoder cpu_transcoder = crtc->config.cpu_transcoder;
+	enum pipe pipe = crtc->pipe;
 
 	if (INTEL_INFO(dev)->gen >= 4) {
 		int reg = PIPECONF(cpu_transcoder);
@@ -2091,21 +2091,19 @@ static void intel_enable_pipe(struct intel_crtc *crtc)
 
 /**
  * intel_disable_pipe - disable a pipe, asserting requirements
- * @dev_priv: i915 private structure
- * @pipe: pipe to disable
+ * @crtc: crtc whose pipes is to be disabled
  *
- * Disable @pipe, making sure that various hardware specific requirements
- * are met, if applicable, e.g. plane disabled, panel fitter off, etc.
- *
- * @pipe should be %PIPE_A or %PIPE_B.
+ * Disable the pipe of @crtc, making sure that various hardware
+ * specific requirements are met, if applicable, e.g. plane
+ * disabled, panel fitter off, etc.
  *
  * Will wait until the pipe has shut down before returning.
  */
-static void intel_disable_pipe(struct drm_i915_private *dev_priv,
-			       enum pipe pipe)
+static void intel_disable_pipe(struct intel_crtc *crtc)
 {
-	enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv,
-								      pipe);
+	struct drm_i915_private *dev_priv = crtc->base.dev->dev_private;
+	enum transcoder cpu_transcoder = crtc->config.cpu_transcoder;
+	enum pipe pipe = crtc->pipe;
 	int reg;
 	u32 val;
 
@@ -2128,7 +2126,7 @@ static void intel_disable_pipe(struct drm_i915_private *dev_priv,
 		return;
 
 	I915_WRITE(reg, val & ~PIPECONF_ENABLE);
-	intel_wait_for_pipe_off(dev_priv->dev, pipe);
+	intel_wait_for_pipe_off(crtc);
 }
 
 /*
@@ -4216,7 +4214,7 @@ static void ironlake_crtc_disable(struct drm_crtc *crtc)
 	if (intel_crtc->config.has_pch_encoder)
 		intel_set_pch_fifo_underrun_reporting(dev, pipe, false);
 
-	intel_disable_pipe(dev_priv, pipe);
+	intel_disable_pipe(intel_crtc);
 
 	ironlake_pfit_disable(intel_crtc);
 
@@ -4266,7 +4264,6 @@ static void haswell_crtc_disable(struct drm_crtc *crtc)
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_encoder *encoder;
-	int pipe = intel_crtc->pipe;
 	enum transcoder cpu_transcoder = intel_crtc->config.cpu_transcoder;
 
 	if (!intel_crtc->active)
@@ -4281,7 +4278,7 @@ static void haswell_crtc_disable(struct drm_crtc *crtc)
 
 	if (intel_crtc->config.has_pch_encoder)
 		intel_set_pch_fifo_underrun_reporting(dev, TRANSCODER_A, false);
-	intel_disable_pipe(dev_priv, pipe);
+	intel_disable_pipe(intel_crtc);
 
 	intel_ddi_disable_transcoder_func(dev_priv, cpu_transcoder);
 
@@ -4786,7 +4783,7 @@ static void i9xx_crtc_disable(struct drm_crtc *crtc)
 	if (IS_GEN2(dev))
 		intel_wait_for_vblank(dev, pipe);
 
-	intel_disable_pipe(dev_priv, pipe);
+	intel_disable_pipe(intel_crtc);
 
 	i9xx_pfit_disable(intel_crtc);
 
drivers/gpu/drm/i915/intel_drv.h +0 -1
index 78d4124..24bb131 100644
@@ -741,7 +741,6 @@ int intel_get_pipe_from_crtc_id(struct drm_device *dev, void *data,
 enum transcoder intel_pipe_to_cpu_transcoder(struct drm_i915_private *dev_priv,
 					     enum pipe pipe);
 void intel_wait_for_vblank(struct drm_device *dev, int pipe);
-void intel_wait_for_pipe_off(struct drm_device *dev, int pipe);
 int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp);
 void vlv_wait_port_ready(struct drm_i915_private *dev_priv,
 			 struct intel_digital_port *dport);
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#46 lore raw

[PATCH 17/15] drm/i915: Disable double wide even when leaving the pipe on

From: Ville Syrjälä <[email protected]>

Disable double wide even if the pipe quirk compels us to leave the pipe running. Double wide has certain implications for the plane assignments so best keep it off.

Also helps resuming from S3 on the Fujitsu-Siemens Lifebook S6010 when double wide was enabled prior to suspend.

We do leave the pixel clock ticking at the original rate which would require double wide to be enabled. But since the planes are all disabled I'm hoping that the overly fast clock won't cause any problems. Seems to be fine so far.

---
 drivers/gpu/drm/i915/intel_display.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)
drivers/gpu/drm/i915/intel_display.c +12 -2
index fdda2cf..4004605 100644
@@ -2115,12 +2115,22 @@ static void intel_disable_pipe(struct intel_crtc *crtc)
 	assert_cursor_disabled(dev_priv, pipe);
 	assert_sprites_disabled(dev_priv, pipe);
 
+	reg = PIPECONF(cpu_transcoder);
+
 	/* Don't disable pipe or pipe PLLs if needed */
 	if ((pipe == PIPE_A && dev_priv->quirks & QUIRK_PIPEA_FORCE) ||
-	    (pipe == PIPE_B && dev_priv->quirks & QUIRK_PIPEB_FORCE))
+	    (pipe == PIPE_B && dev_priv->quirks & QUIRK_PIPEB_FORCE)) {
+		/*
+		 * Double wide has implications for planes
+		 * so best keep it disabled when not needed.
+		 */
+		if (crtc->config.double_wide) {
+			I915_WRITE(reg, I915_READ(reg) & ~PIPECONF_DOUBLE_WIDE);
+			POSTING_READ(reg);
+		}
 		return;
+	}
 
-	reg = PIPECONF(cpu_transcoder);
 	val = I915_READ(reg);
 	if ((val & PIPECONF_ENABLE) == 0)
 		return;
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#47 lore raw

[PATCH v2 17/15] drm/i915: Disable double wide even when leaving the pipe on

From: Ville Syrjälä <[email protected]>

Disable double wide even if the pipe quirk compels us to leave the pipe running. Double wide has certain implications for the plane assignments so best keep it off.

Also helps resuming from S3 on the Fujitsu-Siemens Lifebook S6010 when double wide was enabled prior to suspend.

We do leave the pixel clock ticking at the original rate which would require double wide to be enabled. But since the planes are all disabled I'm hoping that the overly fast clock won't cause any problems. Seems to be fine so far.

v2: Disable double wide also when turning the pipe off

---
 drivers/gpu/drm/i915/intel_display.c | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)
drivers/gpu/drm/i915/intel_display.c +15 -7
index 1353744..034f7ce 100644
@@ -2115,18 +2115,26 @@ static void intel_disable_pipe(struct intel_crtc *crtc)
 	assert_cursor_disabled(dev_priv, pipe);
 	assert_sprites_disabled(dev_priv, pipe);
 
-	/* Don't disable pipe or pipe PLLs if needed */
-	if ((pipe == PIPE_A && dev_priv->quirks & QUIRK_PIPEA_FORCE) ||
-	    (pipe == PIPE_B && dev_priv->quirks & QUIRK_PIPEB_FORCE))
-		return;
-
 	reg = PIPECONF(cpu_transcoder);
 	val = I915_READ(reg);
 	if ((val & PIPECONF_ENABLE) == 0)
 		return;
 
-	I915_WRITE(reg, val & ~PIPECONF_ENABLE);
-	intel_wait_for_pipe_off(crtc);
+	/*
+	 * Double wide has implications for planes
+	 * so best keep it disabled when not needed.
+	 */
+	if (crtc->config.double_wide)
+		val &= ~PIPECONF_DOUBLE_WIDE;
+
+	/* Don't disable pipe or pipe PLLs if needed */
+	if (!(pipe == PIPE_A && dev_priv->quirks & QUIRK_PIPEA_FORCE) &&
+	    !(pipe == PIPE_B && dev_priv->quirks & QUIRK_PIPEB_FORCE))
+		val &= ~PIPECONF_ENABLE;
+
+	I915_WRITE(reg, val);
+	if ((val & PIPECONF_ENABLE) == 0)
+		intel_wait_for_pipe_off(crtc);
 }
 
 /*
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#48 lore raw

Deadlock in intel_enable_pipe_a()

Hi Ville, hi Daniel, dear intel experts,

just went through the problem I send around, and I guess I understand now what happens here. The reason *why* resume fails is that there is a deadlock situation in intel_display.c:

*) loading the module calls intel_modeset_init()
*) intel_modeset_init() calls intel_modeset_setup_hw_state(), but protects access to it with a global lock.
*) intel_modeset_setup_hw_state() calls intel_sanitize_crtc()
*) intel_sanitize_crtc() finds that the pipe-a quirk is enabled and calls intel_enable_pipe_a()
*) intel_enable_pipe_a() calls intel_release_load_detect_pipe(), however not using the same mutex context as the caller (intel_modeset_init()). *) intel_release_load_detect_pipe() again gets the mutex of the crtc.

Unfortunately, at this time, the caller (intel_modeset_init()) had already everything locked.

Needless to say, this deadlocks and blocks the kernel completely, causing the problem I found above.

To verify my hypothesis, I removed the locks in intel_release_load_detect_pipe(), (obviously risking race conditions, but never mind for the test).

The result is that the machine is responsive after the resume. It still does not show a display (apparently, intel_sanitize_crtc() is insufficient and does not sanitize enough), but at least one can force-enable it again.

Thus, two bugs:

1) attempting to lock the same lock twice, nested, causing a deadlock. The pipe A quirk is not working correctly by requiring a call into a method that requires a lock that is already held.

2) not sanitizing the chipset sufficiently, still keeping the display black. (This, being, of course a side effect of the buggy bios).

Hope this helps!

Thomas

#49 lore raw

PATCH 1/1 drm/i915: Avoid double mutex lock applying pipe A quirk during sanitize_crtc()

Thomas found that his machine would deadlock reloading the i915.ko module after resume. He identified that this was caused by the reacquisition of the connection mutex inside intel_enable_pipe_a() during the CRTC sanitization routine. This will only affect machines that quirk PIPE A, i.e. the original 830m chipsets.

This patch move the locking into a wrapper function so that intel_enable_pipe_a() can bypass the locking knowing that it already holds the correct locks.

Cc Thomas Richter <[email protected]>
Cc Daniel Vetter <[email protected]>
Cc Ville Syrjälä <[email protected]>
---
 drivers/gpu/drm/i915/intel_display.c |   54 ++++++++++++++++++++++------------
 1 file changed, 35 insertions(+), 19 deletions(-)
drivers/gpu/drm/i915/intel_display.c +35 -19
index c1f79a1..26d3424 100644
@@ -8387,9 +8387,10 @@ mode_fits_in_fbdev(struct drm_device *dev,
 #endif
 }
 
-bool intel_get_load_detect_pipe(struct drm_connector *connector,
-				struct drm_display_mode *mode,
-				struct intel_load_detect_pipe *old)
+static bool
+__intel_get_load_detect_pipe(struct drm_connector *connector,
+			     struct drm_display_mode *mode,
+			     struct intel_load_detect_pipe *old)
 {
 	struct intel_crtc *intel_crtc;
 	struct intel_encoder *intel_encoder =
@@ -8405,7 +8406,7 @@ bool intel_get_load_detect_pipe(struct drm_connector *connector,
 		      connector->base.id, connector->name,
 		      encoder->base.id, encoder->name);
 
-	mutex_lock(&dev->mode_config.connection_mutex);
+	lockdep_assert_held(&dev->mode_config.connection_mutex);
 
 	/*
 	 * Algorithm gets a little messy:
@@ -8449,7 +8450,7 @@ bool intel_get_load_detect_pipe(struct drm_connector *connector,
 	 */
 	if (!crtc) {
 		DRM_DEBUG_KMS("no pipe available for load-detect\n");
-		goto fail_unlock_connector;
+		return false;
 	}
 
 	mutex_lock(&crtc->mutex);
@@ -8503,14 +8504,13 @@ bool intel_get_load_detect_pipe(struct drm_connector *connector,
 	else
 		intel_crtc->new_config = NULL;
 	mutex_unlock(&crtc->mutex);
-fail_unlock_connector:
-	mutex_unlock(&dev->mode_config.connection_mutex);
 
 	return false;
 }
 
-void intel_release_load_detect_pipe(struct drm_connector *connector,
-				    struct intel_load_detect_pipe *old)
+static void
+__intel_release_load_detect_pipe(struct drm_connector *connector,
+				 struct intel_load_detect_pipe *old)
 {
 	struct intel_encoder *intel_encoder =
 		intel_attached_encoder(connector);
@@ -8518,6 +8518,8 @@ void intel_release_load_detect_pipe(struct drm_connector *connector,
 	struct drm_crtc *crtc = encoder->crtc;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 
+	lockdep_assert_held(&connector->dev->mode_config.connection_mutex);
+
 	DRM_DEBUG_KMS("[CONNECTOR:%d:%s], [ENCODER:%d:%s]\n",
 		      connector->base.id, connector->name,
 		      encoder->base.id, encoder->name);
@@ -8533,17 +8535,32 @@ void intel_release_load_detect_pipe(struct drm_connector *connector,
 			drm_framebuffer_unregister_private(old->release_fb);
 			drm_framebuffer_unreference(old->release_fb);
 		}
+	} else {
+		/* Switch crtc and encoder back off if necessary */
+		if (old->dpms_mode != DRM_MODE_DPMS_ON)
+			connector->funcs->dpms(connector, old->dpms_mode);
+	}
+	mutex_unlock(&crtc->mutex);
+}
 
-		mutex_unlock(&crtc->mutex);
+bool intel_get_load_detect_pipe(struct drm_connector *connector,
+				struct drm_display_mode *mode,
+				struct intel_load_detect_pipe *old)
+{
+	mutex_lock(&connector->dev->mode_config.connection_mutex);
+	if (!__intel_get_load_detect_pipe(connector, mode, old)) {
 		mutex_unlock(&connector->dev->mode_config.connection_mutex);
-		return;
+		return false;
 	}
 
-	/* Switch crtc and encoder back off if necessary */
-	if (old->dpms_mode != DRM_MODE_DPMS_ON)
-		connector->funcs->dpms(connector, old->dpms_mode);
+	/* lock will be released by intel_release_load_detect_pipe() */
+	return true;
+}
 
-	mutex_unlock(&crtc->mutex);
+void intel_release_load_detect_pipe(struct drm_connector *connector,
+				    struct intel_load_detect_pipe *old)
+{
+	__intel_release_load_detect_pipe(connector, old);
 	mutex_unlock(&connector->dev->mode_config.connection_mutex);
 }
 
@@ -12354,10 +12371,9 @@ static void intel_enable_pipe_a(struct drm_device *dev)
 	if (!crt)
 		return;
 
-	if (intel_get_load_detect_pipe(crt, NULL, &load_detect_temp))
-		intel_release_load_detect_pipe(crt, &load_detect_temp);
-
-
+	lockdep_assert_held(&dev->mode_config.connection_mutex);
+	if (__intel_get_load_detect_pipe(crt, NULL, &load_detect_temp))
+		__intel_release_load_detect_pipe(crt, &load_detect_temp);
 }
 
 static bool
Signature · 6 lines
1.7.9.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
#50 lore raw

Re: [PATCH] drm/i915: Avoid double mutex lock applying pipe A quirk during sanitize_crtc()

Quoted 9 lines · Chris Wilson

Thomas found that his machine would deadlock reloading the i915.ko module after resume. He identified that this was caused by the reacquisition of the connection mutex inside intel_enable_pipe_a() during the CRTC sanitization routine. This will only affect machines that quirk PIPE A, i.e. the original 830m chipsets.

This patch move the locking into a wrapper function so that intel_enable_pipe_a() can bypass the locking knowing that it already holds the correct locks.

It can still try to grab crtc->mutex twice. Looks like Danial undid my fix to not take all the modeset locks around intel_modeset_setup_hw_state().

Quoted 128 lines
Cc Thomas Richter <[email protected]>
Cc Daniel Vetter <[email protected]>
Cc Ville Syrjälä <[email protected]>
---
 drivers/gpu/drm/i915/intel_display.c |   54 ++++++++++++++++++++++------------
 1 file changed, 35 insertions(+), 19 deletions(-)
drivers/gpu/drm/i915/intel_display.c +35 -19
index c1f79a1..26d3424 100644
@@ -8387,9 +8387,10 @@ mode_fits_in_fbdev(struct drm_device *dev,
 #endif
 }
 
-bool intel_get_load_detect_pipe(struct drm_connector *connector,
-				struct drm_display_mode *mode,
-				struct intel_load_detect_pipe *old)
+static bool
+__intel_get_load_detect_pipe(struct drm_connector *connector,
+			     struct drm_display_mode *mode,
+			     struct intel_load_detect_pipe *old)
 {
 	struct intel_crtc *intel_crtc;
 	struct intel_encoder *intel_encoder =
@@ -8405,7 +8406,7 @@ bool intel_get_load_detect_pipe(struct drm_connector *connector,
 		      connector->base.id, connector->name,
 		      encoder->base.id, encoder->name);
 
-	mutex_lock(&dev->mode_config.connection_mutex);
+	lockdep_assert_held(&dev->mode_config.connection_mutex);
 
 	/*
 	 * Algorithm gets a little messy:
@@ -8449,7 +8450,7 @@ bool intel_get_load_detect_pipe(struct drm_connector *connector,
 	 */
 	if (!crtc) {
 		DRM_DEBUG_KMS("no pipe available for load-detect\n");
-		goto fail_unlock_connector;
+		return false;
 	}
 
 	mutex_lock(&crtc->mutex);
@@ -8503,14 +8504,13 @@ bool intel_get_load_detect_pipe(struct drm_connector *connector,
 	else
 		intel_crtc->new_config = NULL;
 	mutex_unlock(&crtc->mutex);
-fail_unlock_connector:
-	mutex_unlock(&dev->mode_config.connection_mutex);
 
 	return false;
 }
 
-void intel_release_load_detect_pipe(struct drm_connector *connector,
-				    struct intel_load_detect_pipe *old)
+static void
+__intel_release_load_detect_pipe(struct drm_connector *connector,
+				 struct intel_load_detect_pipe *old)
 {
 	struct intel_encoder *intel_encoder =
 		intel_attached_encoder(connector);
@@ -8518,6 +8518,8 @@ void intel_release_load_detect_pipe(struct drm_connector *connector,
 	struct drm_crtc *crtc = encoder->crtc;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 
+	lockdep_assert_held(&connector->dev->mode_config.connection_mutex);
+
 	DRM_DEBUG_KMS("[CONNECTOR:%d:%s], [ENCODER:%d:%s]\n",
 		      connector->base.id, connector->name,
 		      encoder->base.id, encoder->name);
@@ -8533,17 +8535,32 @@ void intel_release_load_detect_pipe(struct drm_connector *connector,
 			drm_framebuffer_unregister_private(old->release_fb);
 			drm_framebuffer_unreference(old->release_fb);
 		}
+	} else {
+		/* Switch crtc and encoder back off if necessary */
+		if (old->dpms_mode != DRM_MODE_DPMS_ON)
+			connector->funcs->dpms(connector, old->dpms_mode);
+	}
+	mutex_unlock(&crtc->mutex);
+}
 
-		mutex_unlock(&crtc->mutex);
+bool intel_get_load_detect_pipe(struct drm_connector *connector,
+				struct drm_display_mode *mode,
+				struct intel_load_detect_pipe *old)
+{
+	mutex_lock(&connector->dev->mode_config.connection_mutex);
+	if (!__intel_get_load_detect_pipe(connector, mode, old)) {
 		mutex_unlock(&connector->dev->mode_config.connection_mutex);
-		return;
+		return false;
 	}
 
-	/* Switch crtc and encoder back off if necessary */
-	if (old->dpms_mode != DRM_MODE_DPMS_ON)
-		connector->funcs->dpms(connector, old->dpms_mode);
+	/* lock will be released by intel_release_load_detect_pipe() */
+	return true;
+}
 
-	mutex_unlock(&crtc->mutex);
+void intel_release_load_detect_pipe(struct drm_connector *connector,
+				    struct intel_load_detect_pipe *old)
+{
+	__intel_release_load_detect_pipe(connector, old);
 	mutex_unlock(&connector->dev->mode_config.connection_mutex);
 }
 
@@ -12354,10 +12371,9 @@ static void intel_enable_pipe_a(struct drm_device *dev)
 	if (!crt)
 		return;
 
-	if (intel_get_load_detect_pipe(crt, NULL, &load_detect_temp))
-		intel_release_load_detect_pipe(crt, &load_detect_temp);
-
-
+	lockdep_assert_held(&dev->mode_config.connection_mutex);
+	if (__intel_get_load_detect_pipe(crt, NULL, &load_detect_temp))
+		__intel_release_load_detect_pipe(crt, &load_detect_temp);
 }
 
 static bool
Signature · 1 line
1.7.9.5
Signature · 2 lines
Ville Syrjälä
Intel OTC
#51 lore raw

Re: [PATCH] drm/i915: Avoid double mutex lock applying pipe A quirk during sanitize_crtc()

Quoted 7 lines · Ville Syrjälä
Quoted 6 lines · Chris Wilson

Thomas found that his machine would deadlock reloading the i915.ko module after resume. He identified that this was caused by the reacquisition of the connection mutex inside intel_enable_pipe_a() during the CRTC sanitization routine. This will only affect machines that quirk PIPE A, i.e. the original 830m chipsets.

Quoted 7 lines
Quoted 3 lines

This patch move the locking into a wrapper function so that intel_enable_pipe_a() can bypass the locking knowing that it already holds the correct locks.

It can still try to grab crtc->mutex twice. Looks like Danial undid my fix to not take all the modeset locks around intel_modeset_setup_hw_state().

Oh well, I only considered the santize_crtc path as I thought we would have caught the modeset sequence deadlocking earlier.

Anyway, the locking is in flux due to the conversion to ww_mutex. Have fun ;-)
-Chris

Signature · 1 line
Chris Wilson, Intel Open Source Technology Centre

A message that is not in the archive (sent off-list or not yet received): 28223_1402303866_5395757A_28223_3428_1_20140609085045.GE16767@nuc-i3427.alporthouse.com

#53 lore raw

Partial success - Fixing resume from s2ram on S6010

Hi Ville, dear intel experts,

without the deadlock in i915, I had at least a partial success in restoring the video on the Fujitsu S6010. Apparently, the bios does not re-initialize the 830MG registers, nor the registers of the ns2501 DVO. Instead, the 830MG is configured in a 640x480 mode (no matter what the suspend mode was) and the DVO is configured in a DPMS off state (no matter what the mode was before the suspend).

The attached script, to be placed in /etc/pm/sleep.d/99video will force correct values back into the registers and thus restore the display. Partially. Trouble still is that the restored screen has some type of "hick-up" by moving left or right by a couple of pixels (probably exactly by one tile, I did not measure). Interestingly, a dump of the DVO and 830MG registers did not reveal any significant difference before and after the restore, so it is still unclear why that hick-up appears.

Anyhow - it seems that $OTHER_OS has a completely different strategy for resume than Linux. $OTHER_OS seems to simply re-load the video registers for the currently active mode, ignoring the current state of the hardware. The i915 kernel module instead seems to try to interpret the current register set to a video mode, and then restores its state from the state of the hardware. It seems to me that this is a less than ideal approach, and it would be better keep a copy of the registers how they should be during suspend, and restore them in the kernel module to the correct video mode on resume, ignoring whatever the bios left there.

Do kernel modules like the i915 or the dvo_ns2501 offer some kind of hook that is called by the kernel when the machine is suspended and resumed? If so, this would be extremely helpful and would allow a much safer suspend/resume operation than currently possible with the mode-detect guess i915 attempts to do.

Thanks,
Thomas

#!/bin/sh
#
PATH="/root/bin/:$PATH"

suspend_video()

{	
    chvt 1
    sleep 0.5
}

restore_video()
{
intel_reg_write 0x2120 0
intel_reg_write 0x61140 0x90004084
intel_reg_write 0x61100 0xC18
intel_reg_write 0x70180 0xd8000000
intel_reg_write 0x70188 0x2000
intel_reg_write 0x70190 0x02ff03ff
intel_reg_write 0x6001c 0x03ff02ff
intel_reg_write 0x70024 0x10000207
intel_reg_write 0x06040 0x0004150d
intel_reg_write 0x06044 0x0004150d
intel_reg_write 0x6014 0xd0820000
intel_reg_write 0x60000 0x053f03ff
intel_reg_write 0x60004 0x053f03ff
intel_reg_write 0x60008 0x049f0417
intel_reg_write 0x6000c 0x032502ff
intel_reg_write 0x60010 0x032502ff
intel_reg_write 0x60014 0x03080302
intel_reg_write 0x71180 0x01000000
intel_reg_write 0x71008 0x80000000
intel_reg_write 0x6101c 0x027f01df
intel_reg_write 0x71024 0x90000206
intel_reg_write 0x06018 0xc08b0000
intel_reg_write 0x61000 0x031f027f
intel_reg_write 0x61004 0x03170287
intel_reg_write 0x61008 0x02ef028f
intel_reg_write 0x6100c 0x020c01df
intel_reg_write 0x61010 0x020401e7
intel_reg_write 0x61014 0x01eb01e9
intel_reg_write 0x2000 0x00400131
intel_reg_write 0x2004 0x05000561
intel_reg_write 0x200c 0x02000561
intel_reg_write 0x2010 0x0

modprobe i2c-hid
modprobe i2c-algo-bit
modprobe i2c-dev
modprobe i2c-scmi
modprobe i2c-i801
modprobe i2c-ismt
modprobe i2c-gpio
modprobe i2c-piix4
modprobe i2c-isch
modprobe i2c-mux
modprobe i2c-core

i2cset -y 5 0x38 8 0x35
i2cset -y 5 0x38 0x34 0x03
i2cset -y 5 0x38 0x35 0xff
i2cset -y 5 0x38 0x37 0x44
i2cset -y 5 0x38 0x40 0x80
i2cset -y 5 0x38 0x41 0x00
i2cset -y 5 0x38 0xb7 0x03
i2cset -y 5 0x38 0xc0 0x01
i2cset -y 5 0x38 0xf0 0xca
i2cset -y 5 0x38 0xf1 0x00
i2cset -y 5 0x38 0xf2 0x11

chvt 7
}

case "$1" in

        suspend) suspend_video;;
        hibernate) suspend_video;;
        resume) restore_video;;
        thaw) restore_video;;

esac

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

#54 lore raw

Re: Partial success - Fixing resume from s2ram on S6010

Quoted 21 lines · Thomas Richter

Hi Ville, dear intel experts,

without the deadlock in i915, I had at least a partial success in restoring the video on the Fujitsu S6010.
Apparently, the bios does not re-initialize the 830MG registers, nor the registers of the ns2501 DVO.
Instead, the 830MG is configured in a 640x480 mode (no matter what the suspend mode was) and
the DVO is configured in a DPMS off state (no matter what the mode was before the suspend).

The attached script, to be placed in /etc/pm/sleep.d/99video will force correct values back into the registers
and thus restore the display. Partially. Trouble still is that the restored screen has some type of "hick-up" by
moving left or right by a couple of pixels (probably exactly by one tile, I did not measure). Interestingly,
a dump of the DVO and 830MG registers did not reveal any significant difference before and after the restore,
so it is still unclear why that hick-up appears.

Quoted 7 lines

Anyhow - it seems that $OTHER_OS has a completely different strategy for resume than Linux. $OTHER_OS seems
to simply re-load the video registers for the currently active mode, ignoring the current state of the hardware.
The i915 kernel module instead seems to try to interpret the current register set to a video mode, and then
restores its state from the state of the hardware.

No, we do restore the mode you were using before suspend.

Are you still using vbetool? That would explain why things go bad since vbetool will clobber whatever i915 already did.

Signature · 2 lines
Ville Syrjälä
Intel OTC

A message that is not in the archive (sent off-list or not yet received): 28223_1402312148_539595D3_28223_4884_1_20140609110857.GM27580@intel.com

#56 lore raw

Re: Partial success - Fixing resume from s2ram on S6010

Am 09.06.2014 13:08, schrieb Ville Syrjälä

Quoted 4 lines

No, we do restore the mode you were using before suspend.

Are you still using vbetool? That would explain why things go bad since vbetool will clobber whatever i915 already did.

No, vbetool is out of the equation (see the script attached to the previous post). However, I dumped the 830MG register set and the ns2501 DVO set before and after the suspend, and they are pretty different. As said, the 830 is configured to use a 640x480 mode (instead of the 1024x786 mode) and the DVO is off.

Maybe the kernel tries to mode-detect the connected monitor, and this fails because the PLLs are not yet configured correctly? Note that the ns2501 requires a correctly configured DVO to be able to respond on the i2c bus. If so, mode-detection requires configuring the PLLs to *some* useful mode before attempting to detect anything, otherwise the DVO just plays "dead".

Greetings,
Thomas

#57 lore raw

Re: Partial success - Fixing resume from s2ram on S6010

Quoted 8 lines · Thomas Richter

Am 09.06.2014 13:08, schrieb Ville Syrjälä

Quoted 4 lines

No, we do restore the mode you were using before suspend.

Are you still using vbetool? That would explain why things go bad since vbetool will clobber whatever i915 already did.

No, vbetool is out of the equation (see the script attached to the previous post).

So now you're using acpi_sleep=s3_bios, or nothing?

Quoted 5 lines

However, I dumped the 830MG register set
and the ns2501 DVO set before and after the suspend, and they are pretty different. As said, the 830 is configured
to use a 640x480 mode (instead of the 1024x786 mode) and the DVO is off.

Quoted 7 lines

Maybe the kernel tries to mode-detect the connected monitor, and this fails because the PLLs are not yet
configured correctly? Note that the ns2501 requires a correctly configured DVO to be able to respond on
the i2c bus. If so, mode-detection requires configuring the PLLs to *some* useful mode before attempting
to detect anything, otherwise the DVO just plays "dead".

Boot with drm.debug=0xe grab the dmesg after the resume and let's see if there is something fishy happening.

Signature · 2 lines
Ville Syrjälä
Intel OTC

A message that is not in the archive (sent off-list or not yet received): 2086_1402313568_53959B5F_2086_895_1_20140609113155.GN27580@intel.com

#59 lore raw

Re: Partial success - Fixing resume from s2ram on S6010

Am 09.06.2014 13:31, schrieb Ville Syrjälä:

Quoted 1 line

So now you're using acpi_sleep=s3_bios, or nothing?

Tried with acpi_sleep=s3 and nothing, makes no difference.

Quoted 3 lines

Boot with drm.debug=0xe grab the dmesg after the resume and let's see if there is something fishy happening.

Ok, here we go:

Note that the kernel finds that all outputs are disabled, then loads a 640x480 mode. All pipes and crtcs are disabled, too.

Greetings,
Thomas

[  162.972995] PM: noirq resume of devices complete after 15.796 msecs
Jun  9 14:20:23 tyleet kernel: [  162.974050] PM: early resume of devices complete after 0.353 msecs
Jun  9 14:20:23 tyleet kernel: [  163.019288] uhci_hcd 0000:00:1d.0: enabling bus mastering
Jun  9 14:20:23 tyleet kernel: [  163.019322] usb usb1: root hub lost power or was reset
Jun  9 14:20:23 tyleet kernel: [  163.019403] uhci_hcd 0000:00:1d.1: enabling bus mastering
Jun  9 14:20:23 tyleet kernel: [  163.019428] usb usb2: root hub lost power or was reset
Jun  9 14:20:23 tyleet kernel: [  163.019597] snd_intel8x0 0000:00:1f.5: enabling bus mastering
Jun  9 14:20:23 tyleet kernel: [  163.019645] 8139too 0000:01:09.0 eth0: link down
Jun  9 14:20:23 tyleet kernel: [  163.069296] sd 0:0:0:0: [sda] Starting disk
Jun  9 14:20:23 tyleet kernel: [  163.069428] [drm:i915_redisable_vga_power_on] Something enabled VGA plane, disabling it
Jun  9 14:20:23 tyleet kernel: [  163.069742] [drm:intel_opregion_setup] graphic opregion physical addr: 0x0
Jun  9 14:20:23 tyleet kernel: [  163.069745] [drm:intel_opregion_setup] ACPI OpRegion not supported!
Jun  9 14:20:23 tyleet kernel: [  163.070172] [drm:intel_modeset_readout_hw_state] [CRTC:5] hw state readout: disabled
Jun  9 14:20:23 tyleet kernel: [  163.070179] [drm:intel_modeset_readout_hw_state] [CRTC:7] hw state readout: disabled
Jun  9 14:20:23 tyleet kernel: [  163.070187] [drm:intel_modeset_readout_hw_state] [ENCODER:9:DAC-9] hw state readout: disabled, pipe A
Jun  9 14:20:23 tyleet kernel: [  163.070192] [drm:intel_modeset_readout_hw_state] [ENCODER:10:None-10] hw state readout: disabled, pipe A
Jun  9 14:20:23 tyleet kernel: [  163.070197] [drm:intel_modeset_readout_hw_state] [CONNECTOR:8:VGA-1] hw state readout: disabled
Jun  9 14:20:23 tyleet kernel: [  163.070202] [drm:intel_modeset_readout_hw_state] [CONNECTOR:11:DVI-I-1] hw state readout: disabled
Jun  9 14:20:23 tyleet kernel: [  163.070211] [drm:i915_get_vblank_timestamp] crtc 0 is disabled
Jun  9 14:20:23 tyleet kernel: [  163.070221] [drm:intel_get_load_detect_pipe] [CONNECTOR:8:VGA-1], [ENCODER:9:DAC-9]
Jun  9 14:20:23 tyleet kernel: [  163.070226] [drm:intel_get_load_detect_pipe] reusing fbdev for load-detection framebuffer
Jun  9 14:20:23 tyleet kernel: [  163.070233] [drm:intel_modeset_affected_pipes] set mode pipe masks: modeset: 1, prepare: 1, disable: 0
Jun  9 14:20:23 tyleet kernel: [  163.070242] [drm:connected_sink_compute_bpp] [CONNECTOR:8:VGA-1] checking for sink bpp constrains
Jun  9 14:20:23 tyleet kernel: [  163.070245] [drm:connected_sink_compute_bpp] [CONNECTOR:11:DVI-I-1] checking for sink bpp constrains
Jun  9 14:20:23 tyleet kernel: [  163.070254] [drm:intel_modeset_pipe_config] plane bpp: 24, pipe bpp: 24, dithering: 0
Jun  9 14:20:23 tyleet kernel: [  163.070259] [drm:intel_dump_pipe_config] [CRTC:5][modeset] config for pipe A
Jun  9 14:20:23 tyleet kernel: [  163.070261] [drm:intel_dump_pipe_config] cpu_transcoder: A
Jun  9 14:20:23 tyleet kernel: [  163.070265] [drm:intel_dump_pipe_config] pipe bpp: 24, dithering: 0
Jun  9 14:20:23 tyleet kernel: [  163.070270] [drm:intel_dump_pipe_config] fdi/pch: 0, lanes: 0, gmch_m: 0, gmch_n: 0, link_m: 0, link_n: 0, tu: 0
Jun  9 14:20:23 tyleet kernel: [  163.070275] [drm:intel_dump_pipe_config] dp: 0, gmch_m: 0, gmch_n: 0, link_m: 0, link_n: 0, tu: 0
Jun  9 14:20:23 tyleet kernel: [  163.070277] [drm:intel_dump_pipe_config] requested mode:
Jun  9 14:20:23 tyleet kernel: [  163.070287] [drm:drm_mode_debug_printmodeline] Modeline 0:"640x480" 0 31500 640 664 704 832 480 489 491 520 0x10 0xa
Jun  9 14:20:23 tyleet kernel: [  163.070289] [drm:intel_dump_pipe_config] adjusted mode:
Jun  9 14:20:23 tyleet kernel: [  163.070298] [drm:drm_mode_debug_printmodeline] Modeline 0:"640x480" 0 31500 640 664 704 832 480 489 491 520 0x10 0xa
Jun  9 14:20:23 tyleet kernel: [  163.070305] [drm:intel_dump_crtc_timings] crtc timings: 31500 640 664 704 832 480 489 491 520, type: 0x10 flags: 0xa
Jun  9 14:20:23 tyleet kernel: [  163.070308] [drm:intel_dump_pipe_config] port clock: 31500
Jun  9 14:20:23 tyleet kernel: [  163.070311] [drm:intel_dump_pipe_config] pipe src size: 640x480
Jun  9 14:20:23 tyleet kernel: [  163.070316] [drm:intel_dump_pipe_config] gmch pfit: control: 0x00000000, ratios: 0x00000000, lvds border: 0x00000000
Jun  9 14:20:23 tyleet kernel: [  163.070320] [drm:intel_dump_pipe_config] pch pfit: pos: 0x00000000, size: 0x00000000, disabled
Jun  9 14:20:23 tyleet kernel: [  163.070323] [drm:intel_dump_pipe_config] ips: 0
Jun  9 14:20:23 tyleet kernel: [  163.070325] [drm:intel_dump_pipe_config] double wide: 0
Jun  9 14:20:23 tyleet kernel: [  163.079041] ------------[ cut here ]------------
Jun  9 14:20:23 tyleet kernel: [  163.079158] WARNING: CPU: 0 PID: 2976 at drivers/gpu/drm/i915/intel_display.c:1255 assert_pipe+0xec/0x100 [i915]()
Jun  9 14:20:23 tyleet kernel: [  163.079161] pipe A assertion failure (expected on, current off)
Jun  9 14:20:23 tyleet kernel: [  163.079246] Modules linked in: michael_mic arc4 ecb lib80211_crypt_tkip lib80211_crypt_ccmp binfmt_misc fuse netconsole loop firewire_sbp2 hid_generic usbhid hid ipw2100 snd_intel8x0 snd_ac97_codec sg libipw ac97_bus sr_mod cfg80211 snd_pcm mousedev cdrom snd_seq snd_seq_device snd_timer pcmcia uhci_hcd irda usbcore i915 rfkill yenta_socket snd firewire_ohci lpc_ich pcmcia_rsrc firewire_core apanel 8139too input_polldev evdev psmouse 8139cp mfd_core mii soundcore crc_itu_t lib80211 i2c_i801 i2c_algo_bit drm_kms_helper 8250 drm pcspkr crc_ccitt pcmcia_core serial_core fujitsu_laptop i2c_core video intel_agp intel_gtt led_class usb_common agpgart ac battery button
Jun  9 14:20:23 tyleet kernel: [  163.079254] CPU: 0 PID: 2976 Comm: kworker/u2:11 Not tainted 3.15.0-rc7+ #8
Jun  9 14:20:23 tyleet kernel: [  163.079257] Hardware name: FUJITSU SIEMENS LIFEBOOK S Series/FJNB159, BIOS Version 1.07  10/28/2002
Jun  9 14:20:23 tyleet kernel: [  163.079275] Workqueue: events_unbound async_run_entry_fn
Jun  9 14:20:23 tyleet kernel: [  163.079287]  c131831e c103451f f8a6cb28 efb6dca0 00000ba0 f8a6b228 000004e7 f8a1d36c
Jun  9 14:20:23 tyleet kernel: [  163.079296]  f8a1d36c c0148001 f5b78000 00000041 00070000 c10345e3 00000009 efb6dc88
Jun  9 14:20:23 tyleet kernel: [  163.079305]  f8a6cb28 efb6dca0 f8a1d36c f8a6b228 000004e7 f8a6cb28 00000041 f8a74230
Jun  9 14:20:23 tyleet kernel: [  163.079307] Call Trace:
Jun  9 14:20:23 tyleet kernel: [  163.079318]  [<c131831e>] ? dump_stack+0xa/0x13
Jun  9 14:20:23 tyleet kernel: [  163.079328]  [<c103451f>] ? warn_slowpath_common+0x7f/0xb0
Jun  9 14:20:23 tyleet kernel: [  163.079376]  [<f8a1d36c>] ? assert_pipe+0xec/0x100 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.079420]  [<f8a1d36c>] ? assert_pipe+0xec/0x100 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.079428]  [<c10345e3>] ? warn_slowpath_fmt+0x33/0x40
Jun  9 14:20:23 tyleet kernel: [  163.079473]  [<f8a1d36c>] ? assert_pipe+0xec/0x100 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.079522]  [<f8a1f79e>] ? i9xx_crtc_enable+0x14e/0x490 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.079567]  [<f8a240cb>] ? __intel_set_mode+0x7cb/0x14d0 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.079581]  [<c10662d2>] ? console_trylock+0x42/0x50
Jun  9 14:20:23 tyleet kernel: [  163.079596]  [<c1317020>] ? printk+0x37/0x3b
Jun  9 14:20:23 tyleet kernel: [  163.079641]  [<f8a273b3>] ? intel_set_mode+0x23/0x40 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.079685]  [<f8a276a7>] ? intel_get_load_detect_pipe+0x1d7/0x410 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.079733]  [<f8a29316>] ? intel_modeset_setup_hw_state+0xab6/0xd40 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.079775]  [<f8a055d5>] ? i915_enable_pipestat+0x95/0x100 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.079817]  [<f8a0da90>] ? gen4_write64+0x50/0x50 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.079846]  [<f89d8227>] ? __i915_drm_thaw+0xf7/0x170 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.079875]  [<f89d8b03>] ? i915_resume+0x23/0x40 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.079886]  [<c119d7d4>] ? pci_pm_resume+0x54/0xc0
Jun  9 14:20:23 tyleet kernel: [  163.079892]  [<c119d780>] ? pci_pm_restore+0xe0/0xe0
Jun  9 14:20:23 tyleet kernel: [  163.079904]  [<c12305fa>] ? dpm_run_callback.isra.8+0x2a/0x70
Jun  9 14:20:23 tyleet kernel: [  163.079911]  [<c1230c40>] ? device_resume+0xb0/0x170
Jun  9 14:20:23 tyleet kernel: [  163.079917]  [<c1230d16>] ? async_resume+0x16/0x40
Jun  9 14:20:23 tyleet kernel: [  163.079925]  [<c10502ba>] ? async_run_entry_fn+0x3a/0x130
Jun  9 14:20:23 tyleet kernel: [  163.079931]  [<c1051e7e>] ? check_preempt_curr+0x7e/0x90
Jun  9 14:20:23 tyleet kernel: [  163.079940]  [<c1045f41>] ? process_one_work+0xd1/0x300
Jun  9 14:20:23 tyleet kernel: [  163.079947]  [<c1046aa7>] ? manage_workers.isra.33+0x1a7/0x250
Jun  9 14:20:23 tyleet kernel: [  163.079954]  [<c1046c38>] ? worker_thread+0xe8/0x2f0
Jun  9 14:20:23 tyleet kernel: [  163.079960]  [<c1046b50>] ? manage_workers.isra.33+0x250/0x250
Jun  9 14:20:23 tyleet kernel: [  163.079971]  [<c104b313>] ? kthread+0x93/0xb0
Jun  9 14:20:23 tyleet kernel: [  163.079984]  [<c131bba0>] ? ret_from_kernel_thread+0x20/0x30
Jun  9 14:20:23 tyleet kernel: [  163.079991]  [<c104b280>] ? flush_kthread_worker+0x80/0x80
Jun  9 14:20:23 tyleet kernel: [  163.079995] ---[ end trace 8f4827d64b0098be ]---
Jun  9 14:20:23 tyleet kernel: [  163.080695] [drm:i830_get_fifo_size] FIFO size - (0x00017e5f) A: 47
Jun  9 14:20:23 tyleet kernel: [  163.080700] [drm:intel_calculate_wm] FIFO entries required for mode: 20
Jun  9 14:20:23 tyleet kernel: [  163.080703] [drm:intel_calculate_wm] FIFO watermark level: 25
Jun  9 14:20:23 tyleet kernel: [  163.080707] [drm:i830_get_fifo_size] FIFO size - (0x00017e5f) B: 48
Jun  9 14:20:23 tyleet kernel: [  163.080711] [drm:i9xx_update_wm] FIFO watermarks - A: 25, B: 31
Jun  9 14:20:23 tyleet kernel: [  163.080716] [drm:i9xx_update_wm] Setting FIFO watermarks - A: 25, B: 31, C: 2, SR 1
Jun  9 14:20:23 tyleet kernel: [  163.080729] [drm:ns2501_mode_set] set mode (hdisplay=640,htotal=832,vdisplay=480,vtotal=520).
Jun  9 14:20:23 tyleet kernel: [  163.137445] [drm:ns2501_dpms] Trying set the dpms of the DVO to 1
Jun  9 14:20:23 tyleet kernel: [  163.224337] ata2.00: ACPI cmd ef/03:0c:00:00:00:a0 (unknown) filtered out
Jun  9 14:20:23 tyleet kernel: [  163.224344] ata2.00: ACPI cmd ef/03:42:00:00:00:a0 (unknown) filtered out
Jun  9 14:20:23 tyleet kernel: [  163.224464] ata2.00: ACPI cmd 00/00:00:00:00:00:a0 (unknown) rejected by device (Stat=0x51 Err=0x04)
Jun  9 14:20:23 tyleet kernel: [  163.232261] ata2.00: configured for UDMA/33
Jun  9 14:20:23 tyleet kernel: [  163.361378] [drm:i9xx_update_primary_plane] Writing base 00060000 00000000 0 0 4096
Jun  9 14:20:23 tyleet kernel: [  163.361396] [drm:intel_connector_check_state] [CONNECTOR:8:VGA-1]
Jun  9 14:20:23 tyleet kernel: [  163.362295] [drm:intel_connector_check_state] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:23 tyleet kernel: [  163.362299] [drm:check_encoder_state] [ENCODER:9:DAC-9]
Jun  9 14:20:23 tyleet kernel: [  163.362303] [drm:check_encoder_state] [ENCODER:10:None-10]
Jun  9 14:20:23 tyleet kernel: [  163.362308] [drm:check_crtc_state] [CRTC:5]
Jun  9 14:20:23 tyleet kernel: [  163.362327] [drm:check_crtc_state] [CRTC:7]
Jun  9 14:20:23 tyleet kernel: [  163.376049] [drm:intel_release_load_detect_pipe] [CONNECTOR:8:VGA-1], [ENCODER:9:DAC-9]
Jun  9 14:20:23 tyleet kernel: [  163.376056] [drm:intel_modeset_affected_pipes] set mode pipe masks: modeset: 0, prepare: 0, disable: 1
Jun  9 14:20:23 tyleet kernel: [  163.376062] [drm:i9xx_set_fifo_underrun_reporting] *ERROR* pipe A underrun
Jun  9 14:20:23 tyleet kernel: [  163.376083] [drm:ns2501_dpms] Trying set the dpms of the DVO to 0
Jun  9 14:20:23 tyleet kernel: [  163.536088] usb 1-2: reset low-speed USB device number 3 using uhci_hcd
Jun  9 14:20:23 tyleet kernel: [  163.576094] firewire_core 0000:01:0c.0: rediscovered device fw0
Jun  9 14:20:23 tyleet kernel: [  163.608054] [drm:i830_get_fifo_size] FIFO size - (0x00017e5f) A: 47
Jun  9 14:20:23 tyleet kernel: [  163.608059] [drm:i830_get_fifo_size] FIFO size - (0x00017e5f) B: 48
Jun  9 14:20:23 tyleet kernel: [  163.608062] [drm:i9xx_update_wm] FIFO watermarks - A: 45, B: 31
Jun  9 14:20:23 tyleet kernel: [  163.608066] [drm:i9xx_update_wm] Setting FIFO watermarks - A: 45, B: 31, C: 2, SR 1
Jun  9 14:20:23 tyleet kernel: [  163.608076] ------------[ cut here ]------------
Jun  9 14:20:23 tyleet kernel: [  163.608165] WARNING: CPU: 0 PID: 2976 at drivers/gpu/drm/i915/intel_display.c:9881 __intel_set_mode+0x1363/0x14d0 [i915]()
Jun  9 14:20:23 tyleet kernel: [  163.608247] Modules linked in: michael_mic arc4 ecb lib80211_crypt_tkip lib80211_crypt_ccmp binfmt_misc fuse netconsole loop firewire_sbp2 hid_generic usbhid hid ipw2100 snd_intel8x0 snd_ac97_codec sg libipw ac97_bus sr_mod cfg80211 snd_pcm mousedev cdrom snd_seq snd_seq_device snd_timer pcmcia uhci_hcd irda usbcore i915 rfkill yenta_socket snd firewire_ohci lpc_ich pcmcia_rsrc firewire_core apanel 8139too input_polldev evdev psmouse 8139cp mfd_core mii soundcore crc_itu_t lib80211 i2c_i801 i2c_algo_bit drm_kms_helper 8250 drm pcspkr crc_ccitt pcmcia_core serial_core fujitsu_laptop i2c_core video intel_agp intel_gtt led_class usb_common agpgart ac battery button
Jun  9 14:20:23 tyleet kernel: [  163.608255] CPU: 0 PID: 2976 Comm: kworker/u2:11 Tainted: G        W     3.15.0-rc7+ #8
Jun  9 14:20:23 tyleet kernel: [  163.608258] Hardware name: FUJITSU SIEMENS LIFEBOOK S Series/FJNB159, BIOS Version 1.07  10/28/2002
Jun  9 14:20:23 tyleet kernel: [  163.608273] Workqueue: events_unbound async_run_entry_fn
Jun  9 14:20:23 tyleet kernel: [  163.608284]  c131831e c103451f c13ab9b0 00000000 00000ba0 f8a6b228 00002699 f8a24c63
Jun  9 14:20:23 tyleet kernel: [  163.608293]  f8a24c63 c0148000 f6beb594 f6beb560 f6beb578 c1034569 00000009 00000000
Jun  9 14:20:23 tyleet kernel: [  163.608302]  f8a24c63 f8a5e6f0 f8a6cf10 00000000 00000000 00000001 c10662d2 00000001
Jun  9 14:20:23 tyleet kernel: [  163.608304] Call Trace:
Jun  9 14:20:23 tyleet kernel: [  163.608313]  [<c131831e>] ? dump_stack+0xa/0x13
Jun  9 14:20:23 tyleet kernel: [  163.608321]  [<c103451f>] ? warn_slowpath_common+0x7f/0xb0
Jun  9 14:20:23 tyleet kernel: [  163.608368]  [<f8a24c63>] ? __intel_set_mode+0x1363/0x14d0 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.608413]  [<f8a24c63>] ? __intel_set_mode+0x1363/0x14d0 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.608420]  [<c1034569>] ? warn_slowpath_null+0x19/0x20
Jun  9 14:20:23 tyleet kernel: [  163.608465]  [<f8a24c63>] ? __intel_set_mode+0x1363/0x14d0 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.608479]  [<c10662d2>] ? console_trylock+0x42/0x50
Jun  9 14:20:23 tyleet kernel: [  163.608491]  [<c1317020>] ? printk+0x37/0x3b
Jun  9 14:20:23 tyleet kernel: [  163.608536]  [<f8a273b3>] ? intel_set_mode+0x23/0x40 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.608580]  [<f8a27476>] ? intel_release_load_detect_pipe+0xa6/0x100 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.608626]  [<f8a2932d>] ? intel_modeset_setup_hw_state+0xacd/0xd40 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.608669]  [<f8a055d5>] ? i915_enable_pipestat+0x95/0x100 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.608710]  [<f8a0da90>] ? gen4_write64+0x50/0x50 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.608740]  [<f89d8227>] ? __i915_drm_thaw+0xf7/0x170 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.608768]  [<f89d8b03>] ? i915_resume+0x23/0x40 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.608778]  [<c119d7d4>] ? pci_pm_resume+0x54/0xc0
Jun  9 14:20:23 tyleet kernel: [  163.608784]  [<c119d780>] ? pci_pm_restore+0xe0/0xe0
Jun  9 14:20:23 tyleet kernel: [  163.608795]  [<c12305fa>] ? dpm_run_callback.isra.8+0x2a/0x70
Jun  9 14:20:23 tyleet kernel: [  163.608802]  [<c1230c40>] ? device_resume+0xb0/0x170
Jun  9 14:20:23 tyleet kernel: [  163.608809]  [<c1230d16>] ? async_resume+0x16/0x40
Jun  9 14:20:23 tyleet kernel: [  163.608816]  [<c10502ba>] ? async_run_entry_fn+0x3a/0x130
Jun  9 14:20:23 tyleet kernel: [  163.608822]  [<c1051e7e>] ? check_preempt_curr+0x7e/0x90
Jun  9 14:20:23 tyleet kernel: [  163.608831]  [<c1045f41>] ? process_one_work+0xd1/0x300
Jun  9 14:20:23 tyleet kernel: [  163.608837]  [<c1046aa7>] ? manage_workers.isra.33+0x1a7/0x250
Jun  9 14:20:23 tyleet kernel: [  163.608844]  [<c1046c38>] ? worker_thread+0xe8/0x2f0
Jun  9 14:20:23 tyleet kernel: [  163.608851]  [<c1046b50>] ? manage_workers.isra.33+0x250/0x250
Jun  9 14:20:23 tyleet kernel: [  163.608860]  [<c104b313>] ? kthread+0x93/0xb0
Jun  9 14:20:23 tyleet kernel: [  163.608871]  [<c131bba0>] ? ret_from_kernel_thread+0x20/0x30
Jun  9 14:20:23 tyleet kernel: [  163.608878]  [<c104b280>] ? flush_kthread_worker+0x80/0x80
Jun  9 14:20:23 tyleet kernel: [  163.608883] ---[ end trace 8f4827d64b0098bf ]---
Jun  9 14:20:23 tyleet kernel: [  163.608891] [drm:check_encoder_state] [ENCODER:9:DAC-9]
Jun  9 14:20:23 tyleet kernel: [  163.608895] [drm:check_encoder_state] [ENCODER:10:None-10]
Jun  9 14:20:23 tyleet kernel: [  163.608898] [drm:check_crtc_state] [CRTC:5]
Jun  9 14:20:23 tyleet kernel: [  163.608900] ------------[ cut here ]------------
Jun  9 14:20:23 tyleet kernel: [  163.608945] WARNING: CPU: 0 PID: 2976 at drivers/gpu/drm/i915/intel_display.c:10190 check_crtc_state+0xaa3/0xf10 [i915]()
Jun  9 14:20:23 tyleet kernel: [  163.608948] crtc's computed enabled state doesn't match tracked enabled state (expected 1, found 0)
Jun  9 14:20:23 tyleet kernel: [  163.609023] Modules linked in: michael_mic arc4 ecb lib80211_crypt_tkip lib80211_crypt_ccmp binfmt_misc fuse netconsole loop firewire_sbp2 hid_generic usbhid hid ipw2100 snd_intel8x0 snd_ac97_codec sg libipw ac97_bus sr_mod cfg80211 snd_pcm mousedev cdrom snd_seq snd_seq_device snd_timer pcmcia uhci_hcd irda usbcore i915 rfkill yenta_socket snd firewire_ohci lpc_ich pcmcia_rsrc firewire_core apanel 8139too input_polldev evdev psmouse 8139cp mfd_core mii soundcore crc_itu_t lib80211 i2c_i801 i2c_algo_bit drm_kms_helper 8250 drm pcspkr crc_ccitt pcmcia_core serial_core fujitsu_laptop i2c_core video intel_agp intel_gtt led_class usb_common agpgart ac battery button
Jun  9 14:20:23 tyleet kernel: [  163.609028] CPU: 0 PID: 2976 Comm: kworker/u2:11 Tainted: G        W     3.15.0-rc7+ #8
Jun  9 14:20:23 tyleet kernel: [  163.609031] Hardware name: FUJITSU SIEMENS LIFEBOOK S Series/FJNB159, BIOS Version 1.07  10/28/2002
Jun  9 14:20:23 tyleet kernel: [  163.609039] Workqueue: events_unbound async_run_entry_fn
Jun  9 14:20:23 tyleet kernel: [  163.609049]  c131831e c103451f f8a6b9ac efb6db00 00000ba0 f8a6b228 000027ce f8a184b3
Jun  9 14:20:23 tyleet kernel: [  163.609058]  f8a184b3 c0148000 f6beb574 f8a6b9ac f6beb578 c10345e3 00000009 efb6dae8
Jun  9 14:20:23 tyleet kernel: [  163.609067]  f8a6b9ac efb6db00 f8a184b3 f8a6b228 000027ce f8a6b9ac 00000001 00000000
Jun  9 14:20:23 tyleet kernel: [  163.609068] Call Trace:
Jun  9 14:20:23 tyleet kernel: [  163.609075]  [<c131831e>] ? dump_stack+0xa/0x13
Jun  9 14:20:23 tyleet kernel: [  163.609081]  [<c103451f>] ? warn_slowpath_common+0x7f/0xb0
Jun  9 14:20:23 tyleet kernel: [  163.609128]  [<f8a184b3>] ? check_crtc_state+0xaa3/0xf10 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.609172]  [<f8a184b3>] ? check_crtc_state+0xaa3/0xf10 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.609180]  [<c10345e3>] ? warn_slowpath_fmt+0x33/0x40
Jun  9 14:20:23 tyleet kernel: [  163.609225]  [<f8a184b3>] ? check_crtc_state+0xaa3/0xf10 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.609280]  [<f8a26ddc>] ? intel_modeset_check_state+0x21c/0x7d0 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.609290]  [<c1317020>] ? printk+0x37/0x3b
Jun  9 14:20:23 tyleet kernel: [  163.609334]  [<f8a273c0>] ? intel_set_mode+0x30/0x40 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.609379]  [<f8a27476>] ? intel_release_load_detect_pipe+0xa6/0x100 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.609423]  [<f8a2932d>] ? intel_modeset_setup_hw_state+0xacd/0xd40 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.609466]  [<f8a055d5>] ? i915_enable_pipestat+0x95/0x100 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.609508]  [<f8a0da90>] ? gen4_write64+0x50/0x50 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.609537]  [<f89d8227>] ? __i915_drm_thaw+0xf7/0x170 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.609566]  [<f89d8b03>] ? i915_resume+0x23/0x40 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.609573]  [<c119d7d4>] ? pci_pm_resume+0x54/0xc0
Jun  9 14:20:23 tyleet kernel: [  163.609579]  [<c119d780>] ? pci_pm_restore+0xe0/0xe0
Jun  9 14:20:23 tyleet kernel: [  163.609587]  [<c12305fa>] ? dpm_run_callback.isra.8+0x2a/0x70
Jun  9 14:20:23 tyleet kernel: [  163.609593]  [<c1230c40>] ? device_resume+0xb0/0x170
Jun  9 14:20:23 tyleet kernel: [  163.609600]  [<c1230d16>] ? async_resume+0x16/0x40
Jun  9 14:20:23 tyleet kernel: [  163.609607]  [<c10502ba>] ? async_run_entry_fn+0x3a/0x130
Jun  9 14:20:23 tyleet kernel: [  163.609613]  [<c1051e7e>] ? check_preempt_curr+0x7e/0x90
Jun  9 14:20:23 tyleet kernel: [  163.609620]  [<c1045f41>] ? process_one_work+0xd1/0x300
Jun  9 14:20:23 tyleet kernel: [  163.609626]  [<c1046aa7>] ? manage_workers.isra.33+0x1a7/0x250
Jun  9 14:20:23 tyleet kernel: [  163.609633]  [<c1046c38>] ? worker_thread+0xe8/0x2f0
Jun  9 14:20:23 tyleet kernel: [  163.609639]  [<c1046b50>] ? manage_workers.isra.33+0x250/0x250
Jun  9 14:20:23 tyleet kernel: [  163.609647]  [<c104b313>] ? kthread+0x93/0xb0
Jun  9 14:20:23 tyleet kernel: [  163.609655]  [<c131bba0>] ? ret_from_kernel_thread+0x20/0x30
Jun  9 14:20:23 tyleet kernel: [  163.609662]  [<c104b280>] ? flush_kthread_worker+0x80/0x80
Jun  9 14:20:23 tyleet kernel: [  163.609666] ---[ end trace 8f4827d64b0098c0 ]---
Jun  9 14:20:23 tyleet kernel: [  163.609676] [drm:check_crtc_state] [CRTC:7]
Jun  9 14:20:23 tyleet kernel: [  163.609685] [drm:intel_dump_pipe_config] [CRTC:5][setup_hw_state] config for pipe A
Jun  9 14:20:23 tyleet kernel: [  163.609687] [drm:intel_dump_pipe_config] cpu_transcoder: A
Jun  9 14:20:23 tyleet kernel: [  163.609690] [drm:intel_dump_pipe_config] pipe bpp: 24, dithering: 0
Jun  9 14:20:23 tyleet kernel: [  163.609696] [drm:intel_dump_pipe_config] fdi/pch: 0, lanes: 0, gmch_m: 0, gmch_n: 0, link_m: 0, link_n: 0, tu: 0
Jun  9 14:20:23 tyleet kernel: [  163.609701] [drm:intel_dump_pipe_config] dp: 0, gmch_m: 0, gmch_n: 0, link_m: 0, link_n: 0, tu: 0
Jun  9 14:20:23 tyleet kernel: [  163.609703] [drm:intel_dump_pipe_config] requested mode:
Jun  9 14:20:23 tyleet kernel: [  163.609712] [drm:drm_mode_debug_printmodeline] Modeline 0:"640x480" 0 31500 640 664 704 832 480 489 491 520 0x10 0xa
Jun  9 14:20:23 tyleet kernel: [  163.609715] [drm:intel_dump_pipe_config] adjusted mode:
Jun  9 14:20:23 tyleet kernel: [  163.609723] [drm:drm_mode_debug_printmodeline] Modeline 0:"640x480" 0 31500 640 664 704 832 480 489 491 520 0x10 0xa
Jun  9 14:20:23 tyleet kernel: [  163.609730] [drm:intel_dump_crtc_timings] crtc timings: 31500 640 664 704 832 480 489 491 520, type: 0x10 flags: 0xa
Jun  9 14:20:23 tyleet kernel: [  163.609733] [drm:intel_dump_pipe_config] port clock: 31500
Jun  9 14:20:23 tyleet kernel: [  163.609736] [drm:intel_dump_pipe_config] pipe src size: 640x480
Jun  9 14:20:23 tyleet kernel: [  163.609741] [drm:intel_dump_pipe_config] gmch pfit: control: 0x00000000, ratios: 0x00000000, lvds border: 0x00000000
Jun  9 14:20:23 tyleet kernel: [  163.609744] [drm:intel_dump_pipe_config] pch pfit: pos: 0x00000000, size: 0x00000000, disabled
Jun  9 14:20:23 tyleet kernel: [  163.609747] [drm:intel_dump_pipe_config] ips: 0
Jun  9 14:20:23 tyleet kernel: [  163.609750] [drm:intel_dump_pipe_config] double wide: 0
Jun  9 14:20:23 tyleet kernel: [  163.609755] [drm:i915_get_vblank_timestamp] crtc 1 is disabled
Jun  9 14:20:23 tyleet kernel: [  163.609762] [drm:intel_dump_pipe_config] [CRTC:7][setup_hw_state] config for pipe B
Jun  9 14:20:23 tyleet kernel: [  163.609765] [drm:intel_dump_pipe_config] cpu_transcoder: B
Jun  9 14:20:23 tyleet kernel: [  163.609768] [drm:intel_dump_pipe_config] pipe bpp: 0, dithering: 0
Jun  9 14:20:23 tyleet kernel: [  163.609773] [drm:intel_dump_pipe_config] fdi/pch: 0, lanes: 0, gmch_m: 0, gmch_n: 0, link_m: 0, link_n: 0, tu: 0
Jun  9 14:20:23 tyleet kernel: [  163.609778] [drm:intel_dump_pipe_config] dp: 0, gmch_m: 0, gmch_n: 0, link_m: 0, link_n: 0, tu: 0
Jun  9 14:20:23 tyleet kernel: [  163.609780] [drm:intel_dump_pipe_config] requested mode:
Jun  9 14:20:23 tyleet kernel: [  163.609787] [drm:drm_mode_debug_printmodeline] Modeline 0:"" 0 0 0 0 0 0 0 0 0 0 0x0 0x0
Jun  9 14:20:23 tyleet kernel: [  163.609790] [drm:intel_dump_pipe_config] adjusted mode:
Jun  9 14:20:23 tyleet kernel: [  163.609797] [drm:drm_mode_debug_printmodeline] Modeline 0:"" 0 0 0 0 0 0 0 0 0 0 0x0 0x0
Jun  9 14:20:23 tyleet kernel: [  163.609803] [drm:intel_dump_crtc_timings] crtc timings: 0 0 0 0 0 0 0 0 0, type: 0x0 flags: 0x0
Jun  9 14:20:23 tyleet kernel: [  163.609805] [drm:intel_dump_pipe_config] port clock: 0
Jun  9 14:20:23 tyleet kernel: [  163.609808] [drm:intel_dump_pipe_config] pipe src size: 0x0
Jun  9 14:20:23 tyleet kernel: [  163.609813] [drm:intel_dump_pipe_config] gmch pfit: control: 0x00000000, ratios: 0x00000000, lvds border: 0x00000000
Jun  9 14:20:23 tyleet kernel: [  163.609816] [drm:intel_dump_pipe_config] pch pfit: pos: 0x00000000, size: 0x00000000, disabled
Jun  9 14:20:23 tyleet kernel: [  163.609819] [drm:intel_dump_pipe_config] ips: 0
Jun  9 14:20:23 tyleet kernel: [  163.609821] [drm:intel_dump_pipe_config] double wide: 0
Jun  9 14:20:23 tyleet kernel: [  163.609827] [drm:intel_modeset_affected_pipes] set mode pipe masks: modeset: 0, prepare: 0, disable: 0
Jun  9 14:20:23 tyleet kernel: [  163.609829] ------------[ cut here ]------------
Jun  9 14:20:23 tyleet kernel: [  163.609875] WARNING: CPU: 0 PID: 2976 at drivers/gpu/drm/i915/intel_display.c:9881 __intel_set_mode+0x1363/0x14d0 [i915]()
Jun  9 14:20:23 tyleet kernel: [  163.609949] Modules linked in: michael_mic arc4 ecb lib80211_crypt_tkip lib80211_crypt_ccmp binfmt_misc fuse netconsole loop firewire_sbp2 hid_generic usbhid hid ipw2100 snd_intel8x0 snd_ac97_codec sg libipw ac97_bus sr_mod cfg80211 snd_pcm mousedev cdrom snd_seq snd_seq_device snd_timer pcmcia uhci_hcd irda usbcore i915 rfkill yenta_socket snd firewire_ohci lpc_ich pcmcia_rsrc firewire_core apanel 8139too input_polldev evdev psmouse 8139cp mfd_core mii soundcore crc_itu_t lib80211 i2c_i801 i2c_algo_bit drm_kms_helper 8250 drm pcspkr crc_ccitt pcmcia_core serial_core fujitsu_laptop i2c_core video intel_agp intel_gtt led_class usb_common agpgart ac battery button
Jun  9 14:20:23 tyleet kernel: [  163.609955] CPU: 0 PID: 2976 Comm: kworker/u2:11 Tainted: G        W     3.15.0-rc7+ #8
Jun  9 14:20:23 tyleet kernel: [  163.609957] Hardware name: FUJITSU SIEMENS LIFEBOOK S Series/FJNB159, BIOS Version 1.07  10/28/2002
Jun  9 14:20:23 tyleet kernel: [  163.609965] Workqueue: events_unbound async_run_entry_fn
Jun  9 14:20:23 tyleet kernel: [  163.609975]  c131831e c103451f c13ab9b0 00000000 00000ba0 f8a6b228 00002699 f8a24c63
Jun  9 14:20:23 tyleet kernel: [  163.609984]  f8a24c63 c0148000 f6beb594 f6beb560 f6beb578 c1034569 00000009 00000000
Jun  9 14:20:23 tyleet kernel: [  163.609992]  f8a24c63 f8a5e6f0 f8a6cf10 00000000 00000000 00000000 00000000 00000000
Jun  9 14:20:23 tyleet kernel: [  163.609994] Call Trace:
Jun  9 14:20:23 tyleet kernel: [  163.610000]  [<c131831e>] ? dump_stack+0xa/0x13
Jun  9 14:20:23 tyleet kernel: [  163.610007]  [<c103451f>] ? warn_slowpath_common+0x7f/0xb0
Jun  9 14:20:23 tyleet kernel: [  163.610053]  [<f8a24c63>] ? __intel_set_mode+0x1363/0x14d0 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.610098]  [<f8a24c63>] ? __intel_set_mode+0x1363/0x14d0 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.610105]  [<c1034569>] ? warn_slowpath_null+0x19/0x20
Jun  9 14:20:23 tyleet kernel: [  163.610149]  [<f8a24c63>] ? __intel_set_mode+0x1363/0x14d0 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.610160]  [<c131a468>] ? mutex_lock+0x8/0x15
Jun  9 14:20:23 tyleet kernel: [  163.610204]  [<f8a287df>] ? i915_redisable_vga_power_on+0x3f/0x90 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.610248]  [<f8a28fe4>] ? intel_modeset_setup_hw_state+0x784/0xd40 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.610290]  [<f8a055d5>] ? i915_enable_pipestat+0x95/0x100 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.610332]  [<f8a0da90>] ? gen4_write64+0x50/0x50 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.610361]  [<f89d8227>] ? __i915_drm_thaw+0xf7/0x170 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.610390]  [<f89d8b03>] ? i915_resume+0x23/0x40 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.610398]  [<c119d7d4>] ? pci_pm_resume+0x54/0xc0
Jun  9 14:20:23 tyleet kernel: [  163.610404]  [<c119d780>] ? pci_pm_restore+0xe0/0xe0
Jun  9 14:20:23 tyleet kernel: [  163.610411]  [<c12305fa>] ? dpm_run_callback.isra.8+0x2a/0x70
Jun  9 14:20:23 tyleet kernel: [  163.610418]  [<c1230c40>] ? device_resume+0xb0/0x170
Jun  9 14:20:23 tyleet kernel: [  163.610424]  [<c1230d16>] ? async_resume+0x16/0x40
Jun  9 14:20:23 tyleet kernel: [  163.610432]  [<c10502ba>] ? async_run_entry_fn+0x3a/0x130
Jun  9 14:20:23 tyleet kernel: [  163.610437]  [<c1051e7e>] ? check_preempt_curr+0x7e/0x90
Jun  9 14:20:23 tyleet kernel: [  163.610444]  [<c1045f41>] ? process_one_work+0xd1/0x300
Jun  9 14:20:23 tyleet kernel: [  163.610451]  [<c1046aa7>] ? manage_workers.isra.33+0x1a7/0x250
Jun  9 14:20:23 tyleet kernel: [  163.610457]  [<c1046c38>] ? worker_thread+0xe8/0x2f0
Jun  9 14:20:23 tyleet kernel: [  163.610464]  [<c1046b50>] ? manage_workers.isra.33+0x250/0x250
Jun  9 14:20:23 tyleet kernel: [  163.610471]  [<c104b313>] ? kthread+0x93/0xb0
Jun  9 14:20:23 tyleet kernel: [  163.610479]  [<c131bba0>] ? ret_from_kernel_thread+0x20/0x30
Jun  9 14:20:23 tyleet kernel: [  163.610486]  [<c104b280>] ? flush_kthread_worker+0x80/0x80
Jun  9 14:20:23 tyleet kernel: [  163.610490] ---[ end trace 8f4827d64b0098c1 ]---
Jun  9 14:20:23 tyleet kernel: [  163.610496] [drm:intel_modeset_affected_pipes] set mode pipe masks: modeset: 0, prepare: 0, disable: 0
Jun  9 14:20:23 tyleet kernel: [  163.610499] ------------[ cut here ]------------
Jun  9 14:20:23 tyleet kernel: [  163.610544] WARNING: CPU: 0 PID: 2976 at drivers/gpu/drm/i915/intel_display.c:9881 __intel_set_mode+0x1363/0x14d0 [i915]()
Jun  9 14:20:23 tyleet kernel: [  163.610618] Modules linked in: michael_mic arc4 ecb lib80211_crypt_tkip lib80211_crypt_ccmp binfmt_misc fuse netconsole loop firewire_sbp2 hid_generic usbhid hid ipw2100 snd_intel8x0 snd_ac97_codec sg libipw ac97_bus sr_mod cfg80211 snd_pcm mousedev cdrom snd_seq snd_seq_device snd_timer pcmcia uhci_hcd irda usbcore i915 rfkill yenta_socket snd firewire_ohci lpc_ich pcmcia_rsrc firewire_core apanel 8139too input_polldev evdev psmouse 8139cp mfd_core mii soundcore crc_itu_t lib80211 i2c_i801 i2c_algo_bit drm_kms_helper 8250 drm pcspkr crc_ccitt pcmcia_core serial_core fujitsu_laptop i2c_core video intel_agp intel_gtt led_class usb_common agpgart ac battery button
Jun  9 14:20:23 tyleet kernel: [  163.610623] CPU: 0 PID: 2976 Comm: kworker/u2:11 Tainted: G        W     3.15.0-rc7+ #8
Jun  9 14:20:23 tyleet kernel: [  163.610626] Hardware name: FUJITSU SIEMENS LIFEBOOK S Series/FJNB159, BIOS Version 1.07  10/28/2002
Jun  9 14:20:23 tyleet kernel: [  163.610633] Workqueue: events_unbound async_run_entry_fn
Jun  9 14:20:23 tyleet kernel: [  163.610643]  c131831e c103451f c13ab9b0 00000000 00000ba0 f8a6b228 00002699 f8a24c63
Jun  9 14:20:23 tyleet kernel: [  163.610652]  f8a24c63 c0148000 f6beb594 f6beb560 f6beb578 c1034569 00000009 00000000
Jun  9 14:20:23 tyleet kernel: [  163.610661]  f8a24c63 f8a5e6f0 f8a6cf10 00000000 00000000 00000000 00000000 00000000
Jun  9 14:20:23 tyleet kernel: [  163.610662] Call Trace:
Jun  9 14:20:23 tyleet kernel: [  163.610668]  [<c131831e>] ? dump_stack+0xa/0x13
Jun  9 14:20:23 tyleet kernel: [  163.610675]  [<c103451f>] ? warn_slowpath_common+0x7f/0xb0
Jun  9 14:20:23 tyleet kernel: [  163.610721]  [<f8a24c63>] ? __intel_set_mode+0x1363/0x14d0 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.610765]  [<f8a24c63>] ? __intel_set_mode+0x1363/0x14d0 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.610772]  [<c1034569>] ? warn_slowpath_null+0x19/0x20
Jun  9 14:20:23 tyleet kernel: [  163.610817]  [<f8a24c63>] ? __intel_set_mode+0x1363/0x14d0 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.610827]  [<c131a468>] ? mutex_lock+0x8/0x15
Jun  9 14:20:23 tyleet kernel: [  163.610871]  [<f8a287df>] ? i915_redisable_vga_power_on+0x3f/0x90 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.610916]  [<f8a28fe4>] ? intel_modeset_setup_hw_state+0x784/0xd40 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.610957]  [<f8a055d5>] ? i915_enable_pipestat+0x95/0x100 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.610999]  [<f8a0da90>] ? gen4_write64+0x50/0x50 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.611028]  [<f89d8227>] ? __i915_drm_thaw+0xf7/0x170 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.611057]  [<f89d8b03>] ? i915_resume+0x23/0x40 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.611065]  [<c119d7d4>] ? pci_pm_resume+0x54/0xc0
Jun  9 14:20:23 tyleet kernel: [  163.611071]  [<c119d780>] ? pci_pm_restore+0xe0/0xe0
Jun  9 14:20:23 tyleet kernel: [  163.611078]  [<c12305fa>] ? dpm_run_callback.isra.8+0x2a/0x70
Jun  9 14:20:23 tyleet kernel: [  163.611085]  [<c1230c40>] ? device_resume+0xb0/0x170
Jun  9 14:20:23 tyleet kernel: [  163.611091]  [<c1230d16>] ? async_resume+0x16/0x40
Jun  9 14:20:23 tyleet kernel: [  163.611098]  [<c10502ba>] ? async_run_entry_fn+0x3a/0x130
Jun  9 14:20:23 tyleet kernel: [  163.611104]  [<c1051e7e>] ? check_preempt_curr+0x7e/0x90
Jun  9 14:20:23 tyleet kernel: [  163.611111]  [<c1045f41>] ? process_one_work+0xd1/0x300
Jun  9 14:20:23 tyleet kernel: [  163.611117]  [<c1046aa7>] ? manage_workers.isra.33+0x1a7/0x250
Jun  9 14:20:23 tyleet kernel: [  163.611124]  [<c1046c38>] ? worker_thread+0xe8/0x2f0
Jun  9 14:20:23 tyleet kernel: [  163.611131]  [<c1046b50>] ? manage_workers.isra.33+0x250/0x250
Jun  9 14:20:23 tyleet kernel: [  163.611138]  [<c104b313>] ? kthread+0x93/0xb0
Jun  9 14:20:23 tyleet kernel: [  163.611146]  [<c131bba0>] ? ret_from_kernel_thread+0x20/0x30
Jun  9 14:20:23 tyleet kernel: [  163.611153]  [<c104b280>] ? flush_kthread_worker+0x80/0x80
Jun  9 14:20:23 tyleet kernel: [  163.611157] ---[ end trace 8f4827d64b0098c2 ]---
Jun  9 14:20:23 tyleet kernel: [  163.611163] [drm:check_encoder_state] [ENCODER:9:DAC-9]
Jun  9 14:20:23 tyleet kernel: [  163.611167] [drm:check_encoder_state] [ENCODER:10:None-10]
Jun  9 14:20:23 tyleet kernel: [  163.611171] [drm:check_crtc_state] [CRTC:5]
Jun  9 14:20:23 tyleet kernel: [  163.611172] ------------[ cut here ]------------
Jun  9 14:20:23 tyleet kernel: [  163.611217] WARNING: CPU: 0 PID: 2976 at drivers/gpu/drm/i915/intel_display.c:10190 check_crtc_state+0xaa3/0xf10 [i915]()
Jun  9 14:20:23 tyleet kernel: [  163.611219] crtc's computed enabled state doesn't match tracked enabled state (expected 1, found 0)
Jun  9 14:20:23 tyleet kernel: [  163.611293] Modules linked in: michael_mic arc4 ecb lib80211_crypt_tkip lib80211_crypt_ccmp binfmt_misc fuse netconsole loop firewire_sbp2 hid_generic usbhid hid ipw2100 snd_intel8x0 snd_ac97_codec sg libipw ac97_bus sr_mod cfg80211 snd_pcm mousedev cdrom snd_seq snd_seq_device snd_timer pcmcia uhci_hcd irda usbcore i915 rfkill yenta_socket snd firewire_ohci lpc_ich pcmcia_rsrc firewire_core apanel 8139too input_polldev evdev psmouse 8139cp mfd_core mii soundcore crc_itu_t lib80211 i2c_i801 i2c_algo_bit drm_kms_helper 8250 drm pcspkr crc_ccitt pcmcia_core serial_core fujitsu_laptop i2c_core video intel_agp intel_gtt led_class usb_common agpgart ac battery button
Jun  9 14:20:23 tyleet kernel: [  163.611299] CPU: 0 PID: 2976 Comm: kworker/u2:11 Tainted: G        W     3.15.0-rc7+ #8
Jun  9 14:20:23 tyleet kernel: [  163.611301] Hardware name: FUJITSU SIEMENS LIFEBOOK S Series/FJNB159, BIOS Version 1.07  10/28/2002
Jun  9 14:20:23 tyleet kernel: [  163.611309] Workqueue: events_unbound async_run_entry_fn
Jun  9 14:20:23 tyleet kernel: [  163.611319]  c131831e c103451f f8a6b9ac efb6db44 00000ba0 f8a6b228 000027ce f8a184b3
Jun  9 14:20:23 tyleet kernel: [  163.611328]  f8a184b3 c0148000 f6beb574 f8a6b9ac f6beb578 c10345e3 00000009 efb6db2c
Jun  9 14:20:23 tyleet kernel: [  163.611337]  f8a6b9ac efb6db44 f8a184b3 f8a6b228 000027ce f8a6b9ac 00000001 00000000
Jun  9 14:20:23 tyleet kernel: [  163.611338] Call Trace:
Jun  9 14:20:23 tyleet kernel: [  163.611345]  [<c131831e>] ? dump_stack+0xa/0x13
Jun  9 14:20:23 tyleet kernel: [  163.611351]  [<c103451f>] ? warn_slowpath_common+0x7f/0xb0
Jun  9 14:20:23 tyleet kernel: [  163.611398]  [<f8a184b3>] ? check_crtc_state+0xaa3/0xf10 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.611442]  [<f8a184b3>] ? check_crtc_state+0xaa3/0xf10 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.611450]  [<c10345e3>] ? warn_slowpath_fmt+0x33/0x40
Jun  9 14:20:23 tyleet kernel: [  163.611495]  [<f8a184b3>] ? check_crtc_state+0xaa3/0xf10 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.611549]  [<f8a26ddc>] ? intel_modeset_check_state+0x21c/0x7d0 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.611558]  [<c131a468>] ? mutex_lock+0x8/0x15
Jun  9 14:20:23 tyleet kernel: [  163.611602]  [<f8a287df>] ? i915_redisable_vga_power_on+0x3f/0x90 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.611646]  [<f8a28ffb>] ? intel_modeset_setup_hw_state+0x79b/0xd40 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.611688]  [<f8a055d5>] ? i915_enable_pipestat+0x95/0x100 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.611730]  [<f8a0da90>] ? gen4_write64+0x50/0x50 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.611759]  [<f89d8227>] ? __i915_drm_thaw+0xf7/0x170 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.611788]  [<f89d8b03>] ? i915_resume+0x23/0x40 [i915]
Jun  9 14:20:23 tyleet kernel: [  163.611795]  [<c119d7d4>] ? pci_pm_resume+0x54/0xc0
Jun  9 14:20:23 tyleet kernel: [  163.611801]  [<c119d780>] ? pci_pm_restore+0xe0/0xe0
Jun  9 14:20:23 tyleet kernel: [  163.611809]  [<c12305fa>] ? dpm_run_callback.isra.8+0x2a/0x70
Jun  9 14:20:23 tyleet kernel: [  163.611815]  [<c1230c40>] ? device_resume+0xb0/0x170
Jun  9 14:20:23 tyleet kernel: [  163.611822]  [<c1230d16>] ? async_resume+0x16/0x40
Jun  9 14:20:23 tyleet kernel: [  163.611829]  [<c10502ba>] ? async_run_entry_fn+0x3a/0x130
Jun  9 14:20:23 tyleet kernel: [  163.611835]  [<c1051e7e>] ? check_preempt_curr+0x7e/0x90
Jun  9 14:20:23 tyleet kernel: [  163.611842]  [<c1045f41>] ? process_one_work+0xd1/0x300
Jun  9 14:20:23 tyleet kernel: [  163.611848]  [<c1046aa7>] ? manage_workers.isra.33+0x1a7/0x250
Jun  9 14:20:23 tyleet kernel: [  163.611855]  [<c1046c38>] ? worker_thread+0xe8/0x2f0
Jun  9 14:20:23 tyleet kernel: [  163.611861]  [<c1046b50>] ? manage_workers.isra.33+0x250/0x250
Jun  9 14:20:23 tyleet kernel: [  163.611868]  [<c104b313>] ? kthread+0x93/0xb0
Jun  9 14:20:23 tyleet kernel: [  163.611877]  [<c131bba0>] ? ret_from_kernel_thread+0x20/0x30
Jun  9 14:20:23 tyleet kernel: [  163.611884]  [<c104b280>] ? flush_kthread_worker+0x80/0x80
Jun  9 14:20:23 tyleet kernel: [  163.611888] ---[ end trace 8f4827d64b0098c3 ]---
Jun  9 14:20:23 tyleet kernel: [  163.611898] [drm:check_crtc_state] [CRTC:7]
Jun  9 14:20:23 tyleet kernel: [  163.611955] [drm:intel_crtc_set_config] [CRTC:5] [FB:15] #connectors=1 (x y) (0 0)
Jun  9 14:20:23 tyleet kernel: [  163.611963] [drm:intel_set_config_compute_mode_changes] modes are different, full mode set
Jun  9 14:20:23 tyleet kernel: [  163.611972] [drm:drm_mode_debug_printmodeline] Modeline 0:"640x480" 0 31500 640 664 704 832 480 489 491 520 0x10 0xa
Jun  9 14:20:23 tyleet kernel: [  163.611981] [drm:drm_mode_debug_printmodeline] Modeline 13:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa
Jun  9 14:20:23 tyleet kernel: [  163.611984] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=1, fb_changed=0
Jun  9 14:20:23 tyleet kernel: [  163.611990] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:23 tyleet kernel: [  163.611994] [drm:intel_modeset_stage_output_state] crtc enabled, full mode switch
Jun  9 14:20:23 tyleet kernel: [  163.611999] [drm:intel_modeset_affected_pipes] set mode pipe masks: modeset: 1, prepare: 1, disable: 0
Jun  9 14:20:23 tyleet kernel: [  163.612028] [drm:connected_sink_compute_bpp] [CONNECTOR:11:DVI-I-1] checking for sink bpp constrains
Jun  9 14:20:23 tyleet kernel: [  163.612036] [drm:intel_modeset_pipe_config] plane bpp: 24, pipe bpp: 24, dithering: 0
Jun  9 14:20:23 tyleet kernel: [  163.612040] [drm:intel_dump_pipe_config] [CRTC:5][modeset] config for pipe A
Jun  9 14:20:23 tyleet kernel: [  163.612042] [drm:intel_dump_pipe_config] cpu_transcoder: A
Jun  9 14:20:23 tyleet kernel: [  163.612045] [drm:intel_dump_pipe_config] pipe bpp: 24, dithering: 0
Jun  9 14:20:23 tyleet kernel: [  163.612051] [drm:intel_dump_pipe_config] fdi/pch: 0, lanes: 0, gmch_m: 0, gmch_n: 0, link_m: 0, link_n: 0, tu: 0
Jun  9 14:20:23 tyleet kernel: [  163.612055] [drm:intel_dump_pipe_config] dp: 0, gmch_m: 0, gmch_n: 0, link_m: 0, link_n: 0, tu: 0
Jun  9 14:20:23 tyleet kernel: [  163.612057] [drm:intel_dump_pipe_config] requested mode:
Jun  9 14:20:23 tyleet kernel: [  163.612066] [drm:drm_mode_debug_printmodeline] Modeline 0:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa
Jun  9 14:20:23 tyleet kernel: [  163.612068] [drm:intel_dump_pipe_config] adjusted mode:
Jun  9 14:20:23 tyleet kernel: [  163.612076] [drm:drm_mode_debug_printmodeline] Modeline 0:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa
Jun  9 14:20:23 tyleet kernel: [  163.612083] [drm:intel_dump_crtc_timings] crtc timings: 65000 1024 1048 1184 1344 768 771 777 806, type: 0x40 flags: 0xa
Jun  9 14:20:23 tyleet kernel: [  163.612086] [drm:intel_dump_pipe_config] port clock: 65000
Jun  9 14:20:23 tyleet kernel: [  163.612089] [drm:intel_dump_pipe_config] pipe src size: 1024x768
Jun  9 14:20:23 tyleet kernel: [  163.612093] [drm:intel_dump_pipe_config] gmch pfit: control: 0x00000000, ratios: 0x00000000, lvds border: 0x00000000
Jun  9 14:20:23 tyleet kernel: [  163.612097] [drm:intel_dump_pipe_config] pch pfit: pos: 0x00000000, size: 0x00000000, disabled
Jun  9 14:20:23 tyleet kernel: [  163.612099] [drm:intel_dump_pipe_config] ips: 0
Jun  9 14:20:23 tyleet kernel: [  163.612102] [drm:intel_dump_pipe_config] double wide: 0
Jun  9 14:20:23 tyleet kernel: [  163.621356] [drm:i830_get_fifo_size] FIFO size - (0x00017e5f) A: 47
Jun  9 14:20:23 tyleet kernel: [  163.621361] [drm:intel_calculate_wm] FIFO entries required for mode: 41
Jun  9 14:20:23 tyleet kernel: [  163.621363] [drm:intel_calculate_wm] FIFO watermark level: 4
Jun  9 14:20:23 tyleet kernel: [  163.621367] [drm:i830_get_fifo_size] FIFO size - (0x00017e5f) B: 48
Jun  9 14:20:23 tyleet kernel: [  163.621371] [drm:i9xx_update_wm] FIFO watermarks - A: 9, B: 31
Jun  9 14:20:23 tyleet kernel: [  163.621375] [drm:i9xx_update_wm] Setting FIFO watermarks - A: 9, B: 31, C: 2, SR 1
Jun  9 14:20:23 tyleet kernel: [  163.621384] [drm:ns2501_mode_set] set mode (hdisplay=1024,htotal=1344,vdisplay=768,vtotal=806).
Jun  9 14:20:23 tyleet kernel: [  163.677295] [drm:ns2501_dpms] Trying set the dpms of the DVO to 1
Jun  9 14:20:23 tyleet kernel: [  163.900116] PM: resume of devices complete after 926.057 msecs
Jun  9 14:20:23 tyleet kernel: [  163.901688] [drm:i9xx_update_primary_plane] Writing base 00060000 00000000 0 0 4096
Jun  9 14:20:23 tyleet kernel: [  163.902595] [drm:intel_connector_check_state] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:23 tyleet kernel: [  163.902599] [drm:check_encoder_state] [ENCODER:9:DAC-9]
Jun  9 14:20:23 tyleet kernel: [  163.902603] [drm:check_encoder_state] [ENCODER:10:None-10]
Jun  9 14:20:23 tyleet kernel: [  163.902607] [drm:check_crtc_state] [CRTC:5]
Jun  9 14:20:23 tyleet kernel: [  163.902620] [drm:check_crtc_state] [CRTC:7]
Jun  9 14:20:23 tyleet kernel: [  163.915750] PM: Finishing wakeup.
Jun  9 14:20:23 tyleet kernel: [  163.915756] Restarting tasks ... done.
Jun  9 14:20:23 tyleet kernel: [  163.932558] video LNXVIDEO:00: Restoring backlight state
Jun  9 14:20:23 tyleet kernel: [  163.974170] [drm:i8xx_irq_handler] *ERROR* pipe A underrun
Jun  9 14:20:23 tyleet kernel: [  164.344336] ata1.00: ACPI cmd ef/03:0c:00:00:00:a0 (unknown) filtered out
Jun  9 14:20:23 tyleet kernel: [  164.344354] ata1.00: ACPI cmd ef/03:45:00:00:00:a0 (unknown) filtered out
Jun  9 14:20:23 tyleet kernel: [  164.344365] ata1.00: ACPI cmd f5/00:00:00:00:00:a0 (unknown) filtered out
Jun  9 14:20:23 tyleet kernel: [  164.360367] ata1.00: configured for UDMA/100
Jun  9 14:20:24 tyleet kernel: [  164.985747] i2c /dev entries driver
Jun  9 14:20:24 tyleet kernel: [  165.240365] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:24 tyleet kernel: [  165.240393] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:24 tyleet kernel: [  165.240405] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 0)
Jun  9 14:20:24 tyleet kernel: [  165.240420] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:24 tyleet kernel: [  165.240431] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:24 tyleet kernel: [  165.240456] [drm:i9xx_update_primary_plane] Writing base 02000000 00000000 0 0 8192
Jun  9 14:20:24 tyleet kernel: [  165.256313] [drm:drm_mode_getconnector] [CONNECTOR:8:?]
Jun  9 14:20:24 tyleet kernel: [  165.256332] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:8:VGA-1]
Jun  9 14:20:24 tyleet kernel: [  165.256342] [drm:intel_crt_detect] [CONNECTOR:8:VGA-1] force=1
Jun  9 14:20:24 tyleet kernel: [  165.256632] [drm:drm_do_probe_ddc_edid] drm: skipping non-existent adapter i915 gmbus vga
Jun  9 14:20:24 tyleet kernel: [  165.256640] [drm:intel_crt_detect_ddc] CRT not detected via DDC:0x50 [no valid EDID found]
Jun  9 14:20:24 tyleet kernel: [  165.256649] [drm:intel_get_load_detect_pipe] [CONNECTOR:8:VGA-1], [ENCODER:9:DAC-9]
Jun  9 14:20:24 tyleet kernel: [  165.256656] [drm:intel_get_load_detect_pipe] no pipe available for load-detect
Jun  9 14:20:24 tyleet kernel: [  165.256929] [drm:drm_do_probe_ddc_edid] drm: skipping non-existent adapter i915 gmbus vga
Jun  9 14:20:24 tyleet kernel: [  165.256943] [drm:drm_mode_getconnector] [CONNECTOR:8:?]
Jun  9 14:20:24 tyleet kernel: [  165.256951] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:8:VGA-1]
Jun  9 14:20:24 tyleet kernel: [  165.256958] [drm:intel_crt_detect] [CONNECTOR:8:VGA-1] force=1
Jun  9 14:20:24 tyleet kernel: [  165.257229] [drm:drm_do_probe_ddc_edid] drm: skipping non-existent adapter i915 gmbus vga
Jun  9 14:20:24 tyleet kernel: [  165.257235] [drm:intel_crt_detect_ddc] CRT not detected via DDC:0x50 [no valid EDID found]
Jun  9 14:20:24 tyleet kernel: [  165.257243] [drm:intel_get_load_detect_pipe] [CONNECTOR:8:VGA-1], [ENCODER:9:DAC-9]
Jun  9 14:20:24 tyleet kernel: [  165.257249] [drm:intel_get_load_detect_pipe] no pipe available for load-detect
Jun  9 14:20:24 tyleet kernel: [  165.257520] [drm:drm_do_probe_ddc_edid] drm: skipping non-existent adapter i915 gmbus vga
Jun  9 14:20:24 tyleet kernel: [  165.258248] [drm:drm_mode_getconnector] [CONNECTOR:11:?]
Jun  9 14:20:24 tyleet kernel: [  165.258259] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:24 tyleet kernel: [  165.258267] [drm:intel_dvo_detect] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:24 tyleet kernel: [  165.258535] [drm:drm_do_probe_ddc_edid] drm: skipping non-existent adapter i915 gmbus dpc
Jun  9 14:20:24 tyleet kernel: [  165.258579] [drm:ns2501_mode_valid] is mode valid (hdisplay=1024,htotal=1344,vdisplay=768,vtotal=806)
Jun  9 14:20:24 tyleet kernel: [  165.258588] [drm:ns2501_mode_valid] is mode valid (hdisplay=800,htotal=1056,vdisplay=600,vtotal=628)
Jun  9 14:20:24 tyleet kernel: [  165.258596] [drm:ns2501_mode_valid] is mode valid (hdisplay=640,htotal=800,vdisplay=480,vtotal=525)
Jun  9 14:20:24 tyleet kernel: [  165.258604] [drm:ns2501_mode_valid] is mode valid (hdisplay=800,htotal=1024,vdisplay=600,vtotal=625)
Jun  9 14:20:24 tyleet kernel: [  165.258612] [drm:ns2501_mode_valid] is mode valid (hdisplay=848,htotal=1088,vdisplay=480,vtotal=517)
Jun  9 14:20:24 tyleet kernel: [  165.258625] [drm:drm_mode_debug_printmodeline] Modeline 19:"800x600" 0 36000 800 824 896 1024 600 601 603 625 0x40 0x5
Jun  9 14:20:24 tyleet kernel: [  165.258633] [drm:drm_mode_prune_invalid] Not using 800x600 mode 33
Jun  9 14:20:24 tyleet kernel: [  165.258645] [drm:drm_mode_debug_printmodeline] Modeline 21:"848x480" 0 33750 848 864 976 1088 480 486 494 517 0x40 0x5
Jun  9 14:20:24 tyleet kernel: [  165.258651] [drm:drm_mode_prune_invalid] Not using 848x480 mode 33
Jun  9 14:20:24 tyleet kernel: [  165.258661] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:11:DVI-I-1] probed modes :
Jun  9 14:20:24 tyleet kernel: [  165.258675] [drm:drm_mode_debug_printmodeline] Modeline 16:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa
Jun  9 14:20:24 tyleet kernel: [  165.258687] [drm:drm_mode_debug_printmodeline] Modeline 14:"800x600" 60 40000 800 840 968 1056 600 601 605 628 0x40 0x5
Jun  9 14:20:24 tyleet kernel: [  165.258699] [drm:drm_mode_debug_printmodeline] Modeline 12:"640x480" 60 25175 640 656 752 800 480 489 492 525 0x40 0xa
Jun  9 14:20:24 tyleet kernel: [  165.258713] [drm:drm_mode_getconnector] [CONNECTOR:11:?]
Jun  9 14:20:24 tyleet kernel: [  165.288983] [drm:i830_get_fifo_size] FIFO size - (0x00017e5f) A: 47
Jun  9 14:20:24 tyleet kernel: [  165.289005] [drm:intel_calculate_wm] FIFO entries required for mode: 41
Jun  9 14:20:24 tyleet kernel: [  165.289012] [drm:intel_calculate_wm] FIFO watermark level: 4
Jun  9 14:20:24 tyleet kernel: [  165.289019] [drm:i830_get_fifo_size] FIFO size - (0x00017e5f) B: 48
Jun  9 14:20:24 tyleet kernel: [  165.289027] [drm:i9xx_update_wm] FIFO watermarks - A: 9, B: 31
Jun  9 14:20:24 tyleet kernel: [  165.289035] [drm:i9xx_update_wm] Setting FIFO watermarks - A: 9, B: 31, C: 2, SR 1
Jun  9 14:20:27 tyleet kernel: [  168.716299] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.716324] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.716335] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (1 0)
Jun  9 14:20:27 tyleet kernel: [  168.716348] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.716357] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.716378] [drm:i9xx_update_primary_plane] Writing base 02000000 00000004 1 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.717010] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:27 tyleet kernel: [  168.724474] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.724497] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.724508] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (52 0)
Jun  9 14:20:27 tyleet kernel: [  168.724520] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.724530] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.724558] [drm:i9xx_update_primary_plane] Writing base 02000000 000000D0 52 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.733153] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.733182] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.733193] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (95 0)
Jun  9 14:20:27 tyleet kernel: [  168.733205] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.733215] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.733241] [drm:i9xx_update_primary_plane] Writing base 02000000 0000017C 95 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.741241] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.741270] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.741281] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (136 0)
Jun  9 14:20:27 tyleet kernel: [  168.741295] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.741305] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.741333] [drm:i9xx_update_primary_plane] Writing base 02000000 00000220 136 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.748466] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.748489] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.748500] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (173 0)
Jun  9 14:20:27 tyleet kernel: [  168.748513] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.748522] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.748548] [drm:i9xx_update_primary_plane] Writing base 02000000 000002B4 173 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.756477] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.756502] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.756513] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (202 0)
Jun  9 14:20:27 tyleet kernel: [  168.756525] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.756536] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.756562] [drm:i9xx_update_primary_plane] Writing base 02000000 00000328 202 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.764452] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.764475] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.764486] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (231 0)
Jun  9 14:20:27 tyleet kernel: [  168.764499] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.764509] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.764534] [drm:i9xx_update_primary_plane] Writing base 02000000 0000039C 231 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.772471] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.772494] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.772505] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (254 0)
Jun  9 14:20:27 tyleet kernel: [  168.772519] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.772528] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.772555] [drm:i9xx_update_primary_plane] Writing base 02000000 000003F8 254 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.780449] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.780472] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.780483] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (273 0)
Jun  9 14:20:27 tyleet kernel: [  168.780496] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.780506] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.780532] [drm:i9xx_update_primary_plane] Writing base 02000000 00000444 273 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.788473] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.788497] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.788509] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (290 0)
Jun  9 14:20:27 tyleet kernel: [  168.788522] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.788532] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.788558] [drm:i9xx_update_primary_plane] Writing base 02000000 00000488 290 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.796447] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.796470] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.796482] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (307 0)
Jun  9 14:20:27 tyleet kernel: [  168.796493] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.796503] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.796530] [drm:i9xx_update_primary_plane] Writing base 02000000 000004CC 307 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.804482] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.804508] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.804519] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (318 0)
Jun  9 14:20:27 tyleet kernel: [  168.804532] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.804542] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.804563] [drm:i9xx_update_primary_plane] Writing base 02000000 000004F8 318 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.812447] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.812470] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.812481] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (329 0)
Jun  9 14:20:27 tyleet kernel: [  168.812493] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.812503] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.812530] [drm:i9xx_update_primary_plane] Writing base 02000000 00000524 329 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.820497] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.820520] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.820532] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (342 0)
Jun  9 14:20:27 tyleet kernel: [  168.820546] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.820555] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.820583] [drm:i9xx_update_primary_plane] Writing base 02000000 00000558 342 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.828444] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.828469] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.828480] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (357 0)
Jun  9 14:20:27 tyleet kernel: [  168.828493] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.828502] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.828529] [drm:i9xx_update_primary_plane] Writing base 02000000 00000594 357 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.836472] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.836496] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.836507] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (372 0)
Jun  9 14:20:27 tyleet kernel: [  168.836519] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.836529] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.836557] [drm:i9xx_update_primary_plane] Writing base 02000000 000005D0 372 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.844453] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.844477] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.844488] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (387 0)
Jun  9 14:20:27 tyleet kernel: [  168.844500] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.844510] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.844537] [drm:i9xx_update_primary_plane] Writing base 02000000 0000060C 387 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.852468] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.852493] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.852504] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (406 0)
Jun  9 14:20:27 tyleet kernel: [  168.852517] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.852528] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.852554] [drm:i9xx_update_primary_plane] Writing base 02000000 00000658 406 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.860448] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.860471] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.860482] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (427 0)
Jun  9 14:20:27 tyleet kernel: [  168.860495] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.860505] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.860530] [drm:i9xx_update_primary_plane] Writing base 02000000 000006AC 427 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.868462] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.868485] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.868497] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (452 0)
Jun  9 14:20:27 tyleet kernel: [  168.868510] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.868520] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.868547] [drm:i9xx_update_primary_plane] Writing base 02000000 00000710 452 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.876442] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.876466] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.876477] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (477 0)
Jun  9 14:20:27 tyleet kernel: [  168.876489] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.876499] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.876525] [drm:i9xx_update_primary_plane] Writing base 02000000 00000774 477 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.884452] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.884477] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.884488] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (502 0)
Jun  9 14:20:27 tyleet kernel: [  168.884501] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.884511] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.884538] [drm:i9xx_update_primary_plane] Writing base 02000000 000007D8 502 0 8192
Jun  9 14:20:27 tyleet kernel: [  168.892465] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.892489] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:27 tyleet kernel: [  168.892500] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (525 0)
Jun  9 14:20:27 tyleet kernel: [  168.892513] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:27 tyleet kernel: [  168.892523] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:27 tyleet kernel: [  168.892550] [drm:i9xx_update_primary_plane] Writing base 02000000 00000834 525 0 8192
Jun  9 14:20:28 tyleet kernel: [  168.900411] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.900434] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:28 tyleet kernel: [  168.900445] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (548 0)
Jun  9 14:20:28 tyleet kernel: [  168.900456] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:28 tyleet kernel: [  168.900466] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.900486] [drm:i9xx_update_primary_plane] Writing base 02000000 00000890 548 0 8192
Jun  9 14:20:28 tyleet kernel: [  168.908456] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.908480] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:28 tyleet kernel: [  168.908491] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (565 0)
Jun  9 14:20:28 tyleet kernel: [  168.908504] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:28 tyleet kernel: [  168.908514] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.908541] [drm:i9xx_update_primary_plane] Writing base 02000000 000008D4 565 0 8192
Jun  9 14:20:28 tyleet kernel: [  168.916438] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.916461] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:28 tyleet kernel: [  168.916473] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (578 0)
Jun  9 14:20:28 tyleet kernel: [  168.916485] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:28 tyleet kernel: [  168.916495] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.916521] [drm:i9xx_update_primary_plane] Writing base 02000000 00000908 578 0 8192
Jun  9 14:20:28 tyleet kernel: [  168.924448] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.924471] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:28 tyleet kernel: [  168.924482] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (589 0)
Jun  9 14:20:28 tyleet kernel: [  168.924496] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:28 tyleet kernel: [  168.924506] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.924535] [drm:i9xx_update_primary_plane] Writing base 02000000 00000934 589 0 8192
Jun  9 14:20:28 tyleet kernel: [  168.932434] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.932457] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:28 tyleet kernel: [  168.932468] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (600 0)
Jun  9 14:20:28 tyleet kernel: [  168.932481] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:28 tyleet kernel: [  168.932491] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.932516] [drm:i9xx_update_primary_plane] Writing base 02000000 00000960 600 0 8192
Jun  9 14:20:28 tyleet kernel: [  168.940452] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.940475] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:28 tyleet kernel: [  168.940487] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (611 0)
Jun  9 14:20:28 tyleet kernel: [  168.940500] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:28 tyleet kernel: [  168.940510] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.940537] [drm:i9xx_update_primary_plane] Writing base 02000000 0000098C 611 0 8192
Jun  9 14:20:28 tyleet kernel: [  168.948457] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.948481] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:28 tyleet kernel: [  168.948492] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (618 0)
Jun  9 14:20:28 tyleet kernel: [  168.948505] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:28 tyleet kernel: [  168.948514] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.948540] [drm:i9xx_update_primary_plane] Writing base 02000000 000009A8 618 0 8192
Jun  9 14:20:28 tyleet kernel: [  168.949196] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:28 tyleet kernel: [  168.956467] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.956491] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:28 tyleet kernel: [  168.956502] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (622 0)
Jun  9 14:20:28 tyleet kernel: [  168.956514] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:28 tyleet kernel: [  168.956524] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.956550] [drm:i9xx_update_primary_plane] Writing base 02000000 000009B8 622 0 8192
Jun  9 14:20:28 tyleet kernel: [  168.957202] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:28 tyleet kernel: [  168.964446] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.964469] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:28 tyleet kernel: [  168.964480] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (623 0)
Jun  9 14:20:28 tyleet kernel: [  168.964492] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:28 tyleet kernel: [  168.964502] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:28 tyleet kernel: [  168.964527] [drm:i9xx_update_primary_plane] Writing base 02000000 000009BC 623 0 8192
Jun  9 14:20:28 tyleet kernel: [  168.965180] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:29 tyleet kernel: [  169.940196] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  169.940222] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  169.940233] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (617 0)
Jun  9 14:20:29 tyleet kernel: [  169.940246] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  169.940255] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  169.940279] [drm:i9xx_update_primary_plane] Writing base 02000000 000009A4 617 0 8192
Jun  9 14:20:29 tyleet kernel: [  169.948367] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  169.948390] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  169.948401] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (600 0)
Jun  9 14:20:29 tyleet kernel: [  169.948413] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  169.948423] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  169.948448] [drm:i9xx_update_primary_plane] Writing base 02000000 00000960 600 0 8192
Jun  9 14:20:29 tyleet kernel: [  169.956468] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  169.956501] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  169.956513] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (583 0)
Jun  9 14:20:29 tyleet kernel: [  169.956526] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  169.956538] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  169.956655] [drm:i9xx_update_primary_plane] Writing base 02000000 0000091C 583 0 8192
Jun  9 14:20:29 tyleet kernel: [  169.964375] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  169.964399] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  169.964411] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (562 0)
Jun  9 14:20:29 tyleet kernel: [  169.964422] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  169.964432] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  169.964454] [drm:i9xx_update_primary_plane] Writing base 02000000 000008C8 562 0 8192
Jun  9 14:20:29 tyleet kernel: [  169.972376] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  169.972401] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  169.972412] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (545 0)
Jun  9 14:20:29 tyleet kernel: [  169.972425] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  169.972434] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  169.972462] [drm:i9xx_update_primary_plane] Writing base 02000000 00000884 545 0 8192
Jun  9 14:20:29 tyleet kernel: [  169.980358] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  169.980381] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  169.980392] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (528 0)
Jun  9 14:20:29 tyleet kernel: [  169.980404] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  169.980414] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  169.980440] [drm:i9xx_update_primary_plane] Writing base 02000000 00000840 528 0 8192
Jun  9 14:20:29 tyleet kernel: [  169.988393] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  169.988418] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  169.988429] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (507 0)
Jun  9 14:20:29 tyleet kernel: [  169.988442] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  169.988452] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  169.988479] [drm:i9xx_update_primary_plane] Writing base 02000000 000007EC 507 0 8192
Jun  9 14:20:29 tyleet kernel: [  169.996350] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  169.996373] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  169.996383] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (484 0)
Jun  9 14:20:29 tyleet kernel: [  169.996396] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  169.996406] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  169.996431] [drm:i9xx_update_primary_plane] Writing base 02000000 00000790 484 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.006782] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.006810] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.006821] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (463 0)
Jun  9 14:20:29 tyleet kernel: [  170.006834] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.006844] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.006873] [drm:i9xx_update_primary_plane] Writing base 02000000 0000073C 463 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.012353] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.012378] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.012389] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (442 0)
Jun  9 14:20:29 tyleet kernel: [  170.012401] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.012411] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.012432] [drm:i9xx_update_primary_plane] Writing base 02000000 000006E8 442 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.020363] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.020387] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.020398] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (419 0)
Jun  9 14:20:29 tyleet kernel: [  170.020410] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.020420] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.020445] [drm:i9xx_update_primary_plane] Writing base 02000000 0000068C 419 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.028339] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.028361] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.028372] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (396 0)
Jun  9 14:20:29 tyleet kernel: [  170.028385] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.028395] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.028419] [drm:i9xx_update_primary_plane] Writing base 02000000 00000630 396 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.036352] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.036374] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.036384] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (369 0)
Jun  9 14:20:29 tyleet kernel: [  170.036396] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.036406] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.036433] [drm:i9xx_update_primary_plane] Writing base 02000000 000005C4 369 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.044336] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.044358] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.044369] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (342 0)
Jun  9 14:20:29 tyleet kernel: [  170.044381] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.044391] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.044415] [drm:i9xx_update_primary_plane] Writing base 02000000 00000558 342 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.052371] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.052395] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.052406] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (315 0)
Jun  9 14:20:29 tyleet kernel: [  170.052418] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.052428] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.052450] [drm:i9xx_update_primary_plane] Writing base 02000000 000004EC 315 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.060388] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.060412] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.060423] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (288 0)
Jun  9 14:20:29 tyleet kernel: [  170.060435] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.060445] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.060467] [drm:i9xx_update_primary_plane] Writing base 02000000 00000480 288 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.068503] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.068525] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.068537] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (261 0)
Jun  9 14:20:29 tyleet kernel: [  170.068550] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.068560] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.068584] [drm:i9xx_update_primary_plane] Writing base 02000000 00000414 261 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.076339] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.076362] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.076373] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (236 0)
Jun  9 14:20:29 tyleet kernel: [  170.076385] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.076395] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.076418] [drm:i9xx_update_primary_plane] Writing base 02000000 000003B0 236 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.084350] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.084373] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.084384] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (213 0)
Jun  9 14:20:29 tyleet kernel: [  170.084396] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.084407] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.084428] [drm:i9xx_update_primary_plane] Writing base 02000000 00000354 213 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.092348] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.092370] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.092381] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (194 0)
Jun  9 14:20:29 tyleet kernel: [  170.092394] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.092403] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.092427] [drm:i9xx_update_primary_plane] Writing base 02000000 00000308 194 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.100301] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.100321] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.100332] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (175 0)
Jun  9 14:20:29 tyleet kernel: [  170.100343] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.100353] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.100374] [drm:i9xx_update_primary_plane] Writing base 02000000 000002BC 175 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.108353] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.108376] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.108387] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (158 0)
Jun  9 14:20:29 tyleet kernel: [  170.108400] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.108410] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.108431] [drm:i9xx_update_primary_plane] Writing base 02000000 00000278 158 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.116332] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.116354] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.116365] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (141 0)
Jun  9 14:20:29 tyleet kernel: [  170.116377] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.116387] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.116409] [drm:i9xx_update_primary_plane] Writing base 02000000 00000234 141 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.124356] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.124379] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.124389] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (124 0)
Jun  9 14:20:29 tyleet kernel: [  170.124402] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.124412] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.124435] [drm:i9xx_update_primary_plane] Writing base 02000000 000001F0 124 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.133085] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.133113] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.133123] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (105 0)
Jun  9 14:20:29 tyleet kernel: [  170.133136] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.133145] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.133166] [drm:i9xx_update_primary_plane] Writing base 02000000 000001A4 105 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.140415] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.140438] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.140449] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (88 0)
Jun  9 14:20:29 tyleet kernel: [  170.140462] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.140471] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.140495] [drm:i9xx_update_primary_plane] Writing base 02000000 00000160 88 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.148788] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.148814] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.148825] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (73 0)
Jun  9 14:20:29 tyleet kernel: [  170.148838] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.148849] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.148962] [drm:i9xx_update_primary_plane] Writing base 02000000 00000124 73 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.156533] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.156563] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.156574] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (58 0)
Jun  9 14:20:29 tyleet kernel: [  170.156587] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.156596] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.156618] [drm:i9xx_update_primary_plane] Writing base 02000000 000000E8 58 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.164428] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.164454] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.164466] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (45 0)
Jun  9 14:20:29 tyleet kernel: [  170.164477] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.164487] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.164512] [drm:i9xx_update_primary_plane] Writing base 02000000 000000B4 45 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.172366] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.172390] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.172401] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (34 0)
Jun  9 14:20:29 tyleet kernel: [  170.172413] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.172424] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.172443] [drm:i9xx_update_primary_plane] Writing base 02000000 00000088 34 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.180342] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.180365] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.180376] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (27 0)
Jun  9 14:20:29 tyleet kernel: [  170.180389] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.180398] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.180421] [drm:i9xx_update_primary_plane] Writing base 02000000 0000006C 27 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.188367] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.188392] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.188403] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (21 0)
Jun  9 14:20:29 tyleet kernel: [  170.188415] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.188425] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.188449] [drm:i9xx_update_primary_plane] Writing base 02000000 00000054 21 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.196353] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.196377] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.196388] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (12 0)
Jun  9 14:20:29 tyleet kernel: [  170.196399] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.196409] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.196434] [drm:i9xx_update_primary_plane] Writing base 02000000 00000030 12 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.204361] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.204384] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.204395] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (3 0)
Jun  9 14:20:29 tyleet kernel: [  170.204407] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.204417] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.204441] [drm:i9xx_update_primary_plane] Writing base 02000000 0000000C 3 0 8192
Jun  9 14:20:29 tyleet kernel: [  170.212340] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.212362] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:29 tyleet kernel: [  170.212373] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 0)
Jun  9 14:20:29 tyleet kernel: [  170.212386] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:29 tyleet kernel: [  170.212395] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:29 tyleet kernel: [  170.212419] [drm:i9xx_update_primary_plane] Writing base 02000000 00000000 0 0 8192
Jun  9 14:20:32 tyleet kernel: [  173.632089] [drm:intel_crt_detect] [CONNECTOR:8:VGA-1] force=0
Jun  9 14:20:32 tyleet kernel: [  173.632387] [drm:drm_do_probe_ddc_edid] drm: skipping non-existent adapter i915 gmbus vga
Jun  9 14:20:32 tyleet kernel: [  173.632396] [drm:intel_crt_detect_ddc] CRT not detected via DDC:0x50 [no valid EDID found]
Jun  9 14:20:33 tyleet kernel: [  173.972816] ipw2100: exit - failed to send CARD_DISABLE command
Jun  9 14:20:35 tyleet kernel: [  176.531532] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:35 tyleet kernel: [  176.531775] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.531793] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.531804] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 19)
Jun  9 14:20:35 tyleet kernel: [  176.531815] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.531825] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.531848] [drm:i9xx_update_primary_plane] Writing base 02000000 00026000 0 19 8192
Jun  9 14:20:35 tyleet kernel: [  176.539770] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.539795] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.539806] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 44)
Jun  9 14:20:35 tyleet kernel: [  176.539819] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.539829] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.539853] [drm:i9xx_update_primary_plane] Writing base 02000000 00058000 0 44 8192
Jun  9 14:20:35 tyleet kernel: [  176.547727] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.547752] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.547763] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 71)
Jun  9 14:20:35 tyleet kernel: [  176.547775] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.547785] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.547807] [drm:i9xx_update_primary_plane] Writing base 02000000 0008E000 0 71 8192
Jun  9 14:20:35 tyleet kernel: [  176.555772] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.555797] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.555808] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 102)
Jun  9 14:20:35 tyleet kernel: [  176.555821] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.555831] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.555855] [drm:i9xx_update_primary_plane] Writing base 02000000 000CC000 0 102 8192
Jun  9 14:20:35 tyleet kernel: [  176.563753] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.563778] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.563788] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 135)
Jun  9 14:20:35 tyleet kernel: [  176.563800] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.563811] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.563833] [drm:i9xx_update_primary_plane] Writing base 02000000 0010E000 0 135 8192
Jun  9 14:20:35 tyleet kernel: [  176.571793] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.571818] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.571830] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 170)
Jun  9 14:20:35 tyleet kernel: [  176.571842] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.571853] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.571876] [drm:i9xx_update_primary_plane] Writing base 02000000 00154000 0 170 8192
Jun  9 14:20:35 tyleet kernel: [  176.579734] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.579758] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.579769] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 213)
Jun  9 14:20:35 tyleet kernel: [  176.579781] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.579791] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.579813] [drm:i9xx_update_primary_plane] Writing base 02000000 001AA000 0 213 8192
Jun  9 14:20:35 tyleet kernel: [  176.587735] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.587761] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.587771] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 258)
Jun  9 14:20:35 tyleet kernel: [  176.587783] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.587793] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.587813] [drm:i9xx_update_primary_plane] Writing base 02000000 00204000 0 258 8192
Jun  9 14:20:35 tyleet kernel: [  176.595748] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.595774] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.595784] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 303)
Jun  9 14:20:35 tyleet kernel: [  176.595797] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.595807] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.595829] [drm:i9xx_update_primary_plane] Writing base 02000000 0025E000 0 303 8192
Jun  9 14:20:35 tyleet kernel: [  176.603747] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.603772] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.603783] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 348)
Jun  9 14:20:35 tyleet kernel: [  176.603795] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.603805] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.603827] [drm:i9xx_update_primary_plane] Writing base 02000000 002B8000 0 348 8192
Jun  9 14:20:35 tyleet kernel: [  176.611750] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.611775] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.611785] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 393)
Jun  9 14:20:35 tyleet kernel: [  176.611798] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.611807] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.611830] [drm:i9xx_update_primary_plane] Writing base 02000000 00312000 0 393 8192
Jun  9 14:20:35 tyleet kernel: [  176.619729] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.619754] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.619765] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 434)
Jun  9 14:20:35 tyleet kernel: [  176.619778] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.619787] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.619809] [drm:i9xx_update_primary_plane] Writing base 02000000 00364000 0 434 8192
Jun  9 14:20:35 tyleet kernel: [  176.627720] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.627745] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.627756] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 475)
Jun  9 14:20:35 tyleet kernel: [  176.627768] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.627777] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.627798] [drm:i9xx_update_primary_plane] Writing base 02000000 003B6000 0 475 8192
Jun  9 14:20:35 tyleet kernel: [  176.635750] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.635775] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.635786] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 516)
Jun  9 14:20:35 tyleet kernel: [  176.635798] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.635808] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.635831] [drm:i9xx_update_primary_plane] Writing base 02000000 00408000 0 516 8192
Jun  9 14:20:35 tyleet kernel: [  176.643744] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.643769] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.643780] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 551)
Jun  9 14:20:35 tyleet kernel: [  176.643792] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.643802] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.643824] [drm:i9xx_update_primary_plane] Writing base 02000000 0044E000 0 551 8192
Jun  9 14:20:35 tyleet kernel: [  176.651744] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.651769] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.651780] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 586)
Jun  9 14:20:35 tyleet kernel: [  176.651791] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.651801] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.651824] [drm:i9xx_update_primary_plane] Writing base 02000000 00494000 0 586 8192
Jun  9 14:20:35 tyleet kernel: [  176.659723] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.659748] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.659759] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 621)
Jun  9 14:20:35 tyleet kernel: [  176.659771] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.659781] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.659803] [drm:i9xx_update_primary_plane] Writing base 02000000 004DA000 0 621 8192
Jun  9 14:20:35 tyleet kernel: [  176.667742] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.667767] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.667778] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 656)
Jun  9 14:20:35 tyleet kernel: [  176.667790] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.667800] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.667822] [drm:i9xx_update_primary_plane] Writing base 02000000 00520000 0 656 8192
Jun  9 14:20:35 tyleet kernel: [  176.675742] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.675768] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.675779] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 687)
Jun  9 14:20:35 tyleet kernel: [  176.675791] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.675801] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.675822] [drm:i9xx_update_primary_plane] Writing base 02000000 0055E000 0 687 8192
Jun  9 14:20:35 tyleet kernel: [  176.683732] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.683757] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.683768] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 716)
Jun  9 14:20:35 tyleet kernel: [  176.683780] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.683790] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.683811] [drm:i9xx_update_primary_plane] Writing base 02000000 00598000 0 716 8192
Jun  9 14:20:35 tyleet kernel: [  176.691799] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.691824] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.691835] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 745)
Jun  9 14:20:35 tyleet kernel: [  176.691847] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.691857] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.691880] [drm:i9xx_update_primary_plane] Writing base 02000000 005D2000 0 745 8192
Jun  9 14:20:35 tyleet kernel: [  176.699760] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.699786] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:35 tyleet kernel: [  176.699797] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 768)
Jun  9 14:20:35 tyleet kernel: [  176.699810] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:35 tyleet kernel: [  176.699819] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:35 tyleet kernel: [  176.699840] [drm:i9xx_update_primary_plane] Writing base 02000000 00600000 0 768 8192
Jun  9 14:20:36 tyleet kernel: [  177.163460] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:36 tyleet kernel: [  177.164811] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.164835] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:36 tyleet kernel: [  177.164846] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 704)
Jun  9 14:20:36 tyleet kernel: [  177.164860] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:36 tyleet kernel: [  177.164870] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.164891] [drm:i9xx_update_primary_plane] Writing base 02000000 00580000 0 704 8192
Jun  9 14:20:36 tyleet kernel: [  177.171484] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:36 tyleet kernel: [  177.171750] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.171769] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:36 tyleet kernel: [  177.171781] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 629)
Jun  9 14:20:36 tyleet kernel: [  177.171793] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:36 tyleet kernel: [  177.171803] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.171826] [drm:i9xx_update_primary_plane] Writing base 02000000 004EA000 0 629 8192
Jun  9 14:20:36 tyleet kernel: [  177.179474] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:36 tyleet kernel: [  177.180767] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.180791] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:36 tyleet kernel: [  177.180803] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 564)
Jun  9 14:20:36 tyleet kernel: [  177.180816] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:36 tyleet kernel: [  177.180826] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.180848] [drm:i9xx_update_primary_plane] Writing base 02000000 00468000 0 564 8192
Jun  9 14:20:36 tyleet kernel: [  177.187452] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:36 tyleet kernel: [  177.187705] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.187725] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:36 tyleet kernel: [  177.187736] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 495)
Jun  9 14:20:36 tyleet kernel: [  177.187748] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:36 tyleet kernel: [  177.187758] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.187780] [drm:i9xx_update_primary_plane] Writing base 02000000 003DE000 0 495 8192
Jun  9 14:20:36 tyleet kernel: [  177.195467] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:36 tyleet kernel: [  177.195716] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.195733] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:36 tyleet kernel: [  177.195745] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 442)
Jun  9 14:20:36 tyleet kernel: [  177.195757] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:36 tyleet kernel: [  177.195767] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.195789] [drm:i9xx_update_primary_plane] Writing base 02000000 00374000 0 442 8192
Jun  9 14:20:36 tyleet kernel: [  177.203471] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:36 tyleet kernel: [  177.203723] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.203742] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:36 tyleet kernel: [  177.203752] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 389)
Jun  9 14:20:36 tyleet kernel: [  177.203765] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:36 tyleet kernel: [  177.203774] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.203796] [drm:i9xx_update_primary_plane] Writing base 02000000 0030A000 0 389 8192
Jun  9 14:20:36 tyleet kernel: [  177.211704] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.211728] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:36 tyleet kernel: [  177.211739] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 342)
Jun  9 14:20:36 tyleet kernel: [  177.211752] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:36 tyleet kernel: [  177.211761] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.211783] [drm:i9xx_update_primary_plane] Writing base 02000000 002AC000 0 342 8192
Jun  9 14:20:36 tyleet kernel: [  177.219683] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.219708] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:36 tyleet kernel: [  177.219719] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 295)
Jun  9 14:20:36 tyleet kernel: [  177.219731] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:36 tyleet kernel: [  177.219741] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.219762] [drm:i9xx_update_primary_plane] Writing base 02000000 0024E000 0 295 8192
Jun  9 14:20:36 tyleet kernel: [  177.227439] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:36 tyleet kernel: [  177.227692] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.227711] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:36 tyleet kernel: [  177.227722] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 246)
Jun  9 14:20:36 tyleet kernel: [  177.227734] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:36 tyleet kernel: [  177.227744] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.227767] [drm:i9xx_update_primary_plane] Writing base 02000000 001EC000 0 246 8192
Jun  9 14:20:36 tyleet kernel: [  177.235479] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:36 tyleet kernel: [  177.235738] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.235757] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:36 tyleet kernel: [  177.235768] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 197)
Jun  9 14:20:36 tyleet kernel: [  177.235780] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:36 tyleet kernel: [  177.235790] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.235812] [drm:i9xx_update_primary_plane] Writing base 02000000 0018A000 0 197 8192
Jun  9 14:20:36 tyleet kernel: [  177.243700] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.243725] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:36 tyleet kernel: [  177.243736] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 150)
Jun  9 14:20:36 tyleet kernel: [  177.243749] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:36 tyleet kernel: [  177.243758] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.243780] [drm:i9xx_update_primary_plane] Writing base 02000000 0012C000 0 150 8192
Jun  9 14:20:36 tyleet kernel: [  177.251729] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.251755] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:36 tyleet kernel: [  177.251766] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 107)
Jun  9 14:20:36 tyleet kernel: [  177.251778] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:36 tyleet kernel: [  177.251788] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.251810] [drm:i9xx_update_primary_plane] Writing base 02000000 000D6000 0 107 8192
Jun  9 14:20:36 tyleet kernel: [  177.260413] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.260440] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:36 tyleet kernel: [  177.260451] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 70)
Jun  9 14:20:36 tyleet kernel: [  177.260464] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:36 tyleet kernel: [  177.260474] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.260496] [drm:i9xx_update_primary_plane] Writing base 02000000 0008C000 0 70 8192
Jun  9 14:20:36 tyleet kernel: [  177.268472] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.268500] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:36 tyleet kernel: [  177.268511] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 45)
Jun  9 14:20:36 tyleet kernel: [  177.268524] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:36 tyleet kernel: [  177.268534] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.268557] [drm:i9xx_update_primary_plane] Writing base 02000000 0005A000 0 45 8192
Jun  9 14:20:36 tyleet kernel: [  177.275734] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.275758] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:36 tyleet kernel: [  177.275769] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 20)
Jun  9 14:20:36 tyleet kernel: [  177.275782] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:36 tyleet kernel: [  177.275791] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.275813] [drm:i9xx_update_primary_plane] Writing base 02000000 00028000 0 20 8192
Jun  9 14:20:36 tyleet kernel: [  177.283822] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.283848] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:36 tyleet kernel: [  177.283858] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 0)
Jun  9 14:20:36 tyleet kernel: [  177.283870] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:36 tyleet kernel: [  177.283880] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:36 tyleet kernel: [  177.283899] [drm:i9xx_update_primary_plane] Writing base 02000000 00000000 0 0 8192
Jun  9 14:20:42 tyleet kernel: [  183.648061] [drm:intel_crt_detect] [CONNECTOR:8:VGA-1] force=0
Jun  9 14:20:42 tyleet kernel: [  183.648351] [drm:drm_do_probe_ddc_edid] drm: skipping non-existent adapter i915 gmbus vga
Jun  9 14:20:42 tyleet kernel: [  183.648358] [drm:intel_crt_detect_ddc] CRT not detected via DDC:0x50 [no valid EDID found]
Jun  9 14:20:44 tyleet kernel: [  185.562591] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:44 tyleet kernel: [  185.563574] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.563603] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:44 tyleet kernel: [  185.563615] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (58 0)
Jun  9 14:20:44 tyleet kernel: [  185.563627] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:44 tyleet kernel: [  185.563637] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.563659] [drm:i9xx_update_primary_plane] Writing base 02000000 000000E8 58 0 8192
Jun  9 14:20:44 tyleet kernel: [  185.570938] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.570964] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:44 tyleet kernel: [  185.570975] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (151 0)
Jun  9 14:20:44 tyleet kernel: [  185.570987] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:44 tyleet kernel: [  185.570997] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.571017] [drm:i9xx_update_primary_plane] Writing base 02000000 0000025C 151 0 8192
Jun  9 14:20:44 tyleet kernel: [  185.578944] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.578967] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:44 tyleet kernel: [  185.578978] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (252 0)
Jun  9 14:20:44 tyleet kernel: [  185.578990] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:44 tyleet kernel: [  185.579000] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.579023] [drm:i9xx_update_primary_plane] Writing base 02000000 000003F0 252 0 8192
Jun  9 14:20:44 tyleet kernel: [  185.586960] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.586984] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:44 tyleet kernel: [  185.586995] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (353 0)
Jun  9 14:20:44 tyleet kernel: [  185.587008] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:44 tyleet kernel: [  185.587018] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.587040] [drm:i9xx_update_primary_plane] Writing base 02000000 00000584 353 0 8192
Jun  9 14:20:44 tyleet kernel: [  185.594950] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.594973] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:44 tyleet kernel: [  185.594984] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (434 0)
Jun  9 14:20:44 tyleet kernel: [  185.594997] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:44 tyleet kernel: [  185.595007] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.595030] [drm:i9xx_update_primary_plane] Writing base 02000000 000006C8 434 0 8192
Jun  9 14:20:44 tyleet kernel: [  185.602956] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.602981] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:44 tyleet kernel: [  185.602992] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (505 0)
Jun  9 14:20:44 tyleet kernel: [  185.603005] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:44 tyleet kernel: [  185.603015] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.603039] [drm:i9xx_update_primary_plane] Writing base 02000000 000007E4 505 0 8192
Jun  9 14:20:44 tyleet kernel: [  185.610946] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.610969] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:44 tyleet kernel: [  185.610980] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (562 0)
Jun  9 14:20:44 tyleet kernel: [  185.610993] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:44 tyleet kernel: [  185.611003] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.611025] [drm:i9xx_update_primary_plane] Writing base 02000000 000008C8 562 0 8192
Jun  9 14:20:44 tyleet kernel: [  185.618961] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.618984] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:44 tyleet kernel: [  185.618995] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (597 0)
Jun  9 14:20:44 tyleet kernel: [  185.619008] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:44 tyleet kernel: [  185.619018] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.619041] [drm:i9xx_update_primary_plane] Writing base 02000000 00000954 597 0 8192
Jun  9 14:20:44 tyleet kernel: [  185.626946] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.626969] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:44 tyleet kernel: [  185.626979] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (620 0)
Jun  9 14:20:44 tyleet kernel: [  185.626992] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:44 tyleet kernel: [  185.627002] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.627025] [drm:i9xx_update_primary_plane] Writing base 02000000 000009B0 620 0 8192
Jun  9 14:20:44 tyleet kernel: [  185.634939] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.634962] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:44 tyleet kernel: [  185.634973] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (631 0)
Jun  9 14:20:44 tyleet kernel: [  185.634987] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:44 tyleet kernel: [  185.634997] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.635021] [drm:i9xx_update_primary_plane] Writing base 02000000 000009DC 631 0 8192
Jun  9 14:20:44 tyleet kernel: [  185.642954] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.642976] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:44 tyleet kernel: [  185.642987] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (636 0)
Jun  9 14:20:44 tyleet kernel: [  185.643000] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:44 tyleet kernel: [  185.643009] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.643032] [drm:i9xx_update_primary_plane] Writing base 02000000 000009F0 636 0 8192
Jun  9 14:20:44 tyleet kernel: [  185.643673] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:44 tyleet kernel: [  185.650975] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.650999] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:44 tyleet kernel: [  185.651010] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (637 0)
Jun  9 14:20:44 tyleet kernel: [  185.651022] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:44 tyleet kernel: [  185.651032] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.651055] [drm:i9xx_update_primary_plane] Writing base 02000000 000009F4 637 0 8192
Jun  9 14:20:44 tyleet kernel: [  185.651708] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:44 tyleet kernel: [  185.658925] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.658947] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:44 tyleet kernel: [  185.658958] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (638 0)
Jun  9 14:20:44 tyleet kernel: [  185.658971] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:44 tyleet kernel: [  185.658981] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:44 tyleet kernel: [  185.659004] [drm:i9xx_update_primary_plane] Writing base 02000000 000009F8 638 0 8192
Jun  9 14:20:44 tyleet kernel: [  185.659643] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:45 tyleet kernel: [  185.938738] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  185.938763] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  185.938774] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (592 0)
Jun  9 14:20:45 tyleet kernel: [  185.938787] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  185.938797] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  185.938820] [drm:i9xx_update_primary_plane] Writing base 02000000 00000940 592 0 8192
Jun  9 14:20:45 tyleet kernel: [  185.946697] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:45 tyleet kernel: [  185.946956] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  185.946976] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  185.946986] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (537 0)
Jun  9 14:20:45 tyleet kernel: [  185.946999] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  185.947009] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  185.947031] [drm:i9xx_update_primary_plane] Writing base 02000000 00000864 537 0 8192
Jun  9 14:20:45 tyleet kernel: [  185.954636] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:20:45 tyleet kernel: [  185.955019] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  185.955040] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  185.955051] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (482 0)
Jun  9 14:20:45 tyleet kernel: [  185.955064] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  185.955074] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  185.955094] [drm:i9xx_update_primary_plane] Writing base 02000000 00000788 482 0 8192
Jun  9 14:20:45 tyleet kernel: [  185.962918] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  185.962943] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  185.962953] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (435 0)
Jun  9 14:20:45 tyleet kernel: [  185.962966] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  185.962976] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  185.962995] [drm:i9xx_update_primary_plane] Writing base 02000000 000006CC 435 0 8192
Jun  9 14:20:45 tyleet kernel: [  185.970934] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  185.970958] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  185.970968] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (394 0)
Jun  9 14:20:45 tyleet kernel: [  185.970981] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  185.970991] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  185.971014] [drm:i9xx_update_primary_plane] Writing base 02000000 00000628 394 0 8192
Jun  9 14:20:45 tyleet kernel: [  185.978898] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  185.978921] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  185.978932] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (367 0)
Jun  9 14:20:45 tyleet kernel: [  185.978944] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  185.978954] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  185.978975] [drm:i9xx_update_primary_plane] Writing base 02000000 000005BC 367 0 8192
Jun  9 14:20:45 tyleet kernel: [  185.986920] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  185.986945] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  185.986956] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (348 0)
Jun  9 14:20:45 tyleet kernel: [  185.986969] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  185.986980] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  185.987003] [drm:i9xx_update_primary_plane] Writing base 02000000 00000570 348 0 8192
Jun  9 14:20:45 tyleet kernel: [  185.994924] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  185.994947] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  185.994958] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (339 0)
Jun  9 14:20:45 tyleet kernel: [  185.994970] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  185.994980] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  185.995002] [drm:i9xx_update_primary_plane] Writing base 02000000 0000054C 339 0 8192
Jun  9 14:20:45 tyleet kernel: [  186.106853] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.106879] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  186.106889] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (334 0)
Jun  9 14:20:45 tyleet kernel: [  186.106902] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  186.106912] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.106932] [drm:i9xx_update_primary_plane] Writing base 02000000 00000538 334 0 8192
Jun  9 14:20:45 tyleet kernel: [  186.114852] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.114875] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  186.114886] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (303 0)
Jun  9 14:20:45 tyleet kernel: [  186.114899] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  186.114909] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.114932] [drm:i9xx_update_primary_plane] Writing base 02000000 000004BC 303 0 8192
Jun  9 14:20:45 tyleet kernel: [  186.122899] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.122923] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  186.122934] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (270 0)
Jun  9 14:20:45 tyleet kernel: [  186.122947] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  186.122957] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.122979] [drm:i9xx_update_primary_plane] Writing base 02000000 00000438 270 0 8192
Jun  9 14:20:45 tyleet kernel: [  186.130860] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.130880] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  186.130890] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (237 0)
Jun  9 14:20:45 tyleet kernel: [  186.130902] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  186.130912] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.130932] [drm:i9xx_update_primary_plane] Writing base 02000000 000003B4 237 0 8192
Jun  9 14:20:45 tyleet kernel: [  186.138892] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.140134] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  186.140148] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (204 0)
Jun  9 14:20:45 tyleet kernel: [  186.140161] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  186.140171] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.140195] [drm:i9xx_update_primary_plane] Writing base 02000000 00000330 204 0 8192
Jun  9 14:20:45 tyleet kernel: [  186.146884] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.146907] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  186.146918] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (173 0)
Jun  9 14:20:45 tyleet kernel: [  186.146931] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  186.146941] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.146962] [drm:i9xx_update_primary_plane] Writing base 02000000 000002B4 173 0 8192
Jun  9 14:20:45 tyleet kernel: [  186.154951] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.154977] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  186.154989] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (142 0)
Jun  9 14:20:45 tyleet kernel: [  186.155001] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  186.155011] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.155037] [drm:i9xx_update_primary_plane] Writing base 02000000 00000238 142 0 8192
Jun  9 14:20:45 tyleet kernel: [  186.162881] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.162903] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  186.162914] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (109 0)
Jun  9 14:20:45 tyleet kernel: [  186.162927] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  186.162936] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.162959] [drm:i9xx_update_primary_plane] Writing base 02000000 000001B4 109 0 8192
Jun  9 14:20:45 tyleet kernel: [  186.170909] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.170934] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  186.170945] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (76 0)
Jun  9 14:20:45 tyleet kernel: [  186.170957] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  186.170967] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.170990] [drm:i9xx_update_primary_plane] Writing base 02000000 00000130 76 0 8192
Jun  9 14:20:45 tyleet kernel: [  186.178898] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.178921] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  186.178932] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (41 0)
Jun  9 14:20:45 tyleet kernel: [  186.178944] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  186.178954] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.178978] [drm:i9xx_update_primary_plane] Writing base 02000000 000000A4 41 0 8192
Jun  9 14:20:45 tyleet kernel: [  186.186913] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.186937] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  186.186948] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (6 0)
Jun  9 14:20:45 tyleet kernel: [  186.186960] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  186.186970] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.186991] [drm:i9xx_update_primary_plane] Writing base 02000000 00000018 6 0 8192
Jun  9 14:20:45 tyleet kernel: [  186.195587] [drm:drm_mode_setcrtc] [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.195616] [drm:drm_mode_setcrtc] [CONNECTOR:11:DVI-I-1]
Jun  9 14:20:45 tyleet kernel: [  186.195627] [drm:intel_crtc_set_config] [CRTC:5] [FB:18] #connectors=1 (x y) (0 0)
Jun  9 14:20:45 tyleet kernel: [  186.195640] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=1
Jun  9 14:20:45 tyleet kernel: [  186.195650] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:20:45 tyleet kernel: [  186.195671] [drm:i9xx_update_primary_plane] Writing base 02000000 00000000 0 0 8192
Jun  9 14:20:52 tyleet kernel: [  193.664064] [drm:intel_crt_detect] [CONNECTOR:8:VGA-1] force=0
Jun  9 14:20:52 tyleet kernel: [  193.664359] [drm:drm_do_probe_ddc_edid] drm: skipping non-existent adapter i915 gmbus vga
Jun  9 14:20:52 tyleet kernel: [  193.664367] [drm:intel_crt_detect_ddc] CRT not detected via DDC:0x50 [no valid EDID found]
Jun  9 14:21:02 tyleet kernel: [  203.680065] [drm:intel_crt_detect] [CONNECTOR:8:VGA-1] force=0
Jun  9 14:21:02 tyleet kernel: [  203.680358] [drm:drm_do_probe_ddc_edid] drm: skipping non-existent adapter i915 gmbus vga
Jun  9 14:21:02 tyleet kernel: [  203.680367] [drm:intel_crt_detect_ddc] CRT not detected via DDC:0x50 [no valid EDID found]
Jun  9 14:21:05 tyleet kernel: [  206.163158] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:21:05 tyleet kernel: [  206.197059] [drm:intel_crtc_set_config] [CRTC:5] [NOFB]
Jun  9 14:21:05 tyleet kernel: [  206.197086] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=1, fb_changed=0
Jun  9 14:21:05 tyleet kernel: [  206.197097] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [NOCRTC]
Jun  9 14:21:05 tyleet kernel: [  206.197103] [drm:intel_modeset_stage_output_state] encoder changed, full mode switch
Jun  9 14:21:05 tyleet kernel: [  206.197110] [drm:intel_modeset_stage_output_state] crtc changed, full mode switch
Jun  9 14:21:05 tyleet kernel: [  206.197118] [drm:intel_modeset_stage_output_state] crtc disabled, full mode switch
Jun  9 14:21:05 tyleet kernel: [  206.197129] [drm:intel_modeset_affected_pipes] set mode pipe masks: modeset: 0, prepare: 0, disable: 1
Jun  9 14:21:05 tyleet kernel: [  206.238824] [drm:ns2501_dpms] Trying set the dpms of the DVO to 0
Jun  9 14:21:05 tyleet kernel: [  206.468055] [drm:i830_get_fifo_size] FIFO size - (0x00017e5f) A: 47
Jun  9 14:21:05 tyleet kernel: [  206.468067] [drm:i830_get_fifo_size] FIFO size - (0x00017e5f) B: 48
Jun  9 14:21:05 tyleet kernel: [  206.468075] [drm:i9xx_update_wm] FIFO watermarks - A: 45, B: 31
Jun  9 14:21:05 tyleet kernel: [  206.468083] [drm:i9xx_update_wm] Setting FIFO watermarks - A: 45, B: 31, C: 2, SR 1
Jun  9 14:21:05 tyleet kernel: [  206.468107] [drm:check_encoder_state] [ENCODER:9:DAC-9]
Jun  9 14:21:05 tyleet kernel: [  206.468114] [drm:check_encoder_state] [ENCODER:10:None-10]
Jun  9 14:21:05 tyleet kernel: [  206.468122] [drm:check_crtc_state] [CRTC:5]
Jun  9 14:21:05 tyleet kernel: [  206.468138] [drm:check_crtc_state] [CRTC:7]
Jun  9 14:21:05 tyleet kernel: [  206.475097] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:21:05 tyleet kernel: [  206.475112] [drm:intel_crtc_set_config] [CRTC:5] [FB:15] #connectors=1 (x y) (0 0)
Jun  9 14:21:05 tyleet kernel: [  206.475122] [drm:intel_set_config_compute_mode_changes] inactive crtc, full mode set
Jun  9 14:21:05 tyleet kernel: [  206.475129] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=1, fb_changed=0
Jun  9 14:21:05 tyleet kernel: [  206.475133] [drm:intel_modeset_stage_output_state] encoder changed, full mode switch
Jun  9 14:21:05 tyleet kernel: [  206.475138] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:21:05 tyleet kernel: [  206.475141] [drm:intel_modeset_stage_output_state] crtc changed, full mode switch
Jun  9 14:21:05 tyleet kernel: [  206.475144] [drm:intel_modeset_stage_output_state] crtc enabled, full mode switch
Jun  9 14:21:05 tyleet kernel: [  206.475152] [drm:intel_modeset_affected_pipes] set mode pipe masks: modeset: 1, prepare: 1, disable: 0
Jun  9 14:21:05 tyleet kernel: [  206.475161] [drm:connected_sink_compute_bpp] [CONNECTOR:11:DVI-I-1] checking for sink bpp constrains
Jun  9 14:21:05 tyleet kernel: [  206.475171] [drm:intel_modeset_pipe_config] plane bpp: 24, pipe bpp: 24, dithering: 0
Jun  9 14:21:05 tyleet kernel: [  206.475176] [drm:intel_dump_pipe_config] [CRTC:5][modeset] config for pipe A
Jun  9 14:21:05 tyleet kernel: [  206.475179] [drm:intel_dump_pipe_config] cpu_transcoder: A
Jun  9 14:21:05 tyleet kernel: [  206.475182] [drm:intel_dump_pipe_config] pipe bpp: 24, dithering: 0
Jun  9 14:21:05 tyleet kernel: [  206.475187] [drm:intel_dump_pipe_config] fdi/pch: 0, lanes: 0, gmch_m: 0, gmch_n: 0, link_m: 0, link_n: 0, tu: 0
Jun  9 14:21:05 tyleet kernel: [  206.475192] [drm:intel_dump_pipe_config] dp: 0, gmch_m: 0, gmch_n: 0, link_m: 0, link_n: 0, tu: 0
Jun  9 14:21:05 tyleet kernel: [  206.475194] [drm:intel_dump_pipe_config] requested mode:
Jun  9 14:21:05 tyleet kernel: [  206.475204] [drm:drm_mode_debug_printmodeline] Modeline 0:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa
Jun  9 14:21:05 tyleet kernel: [  206.475207] [drm:intel_dump_pipe_config] adjusted mode:
Jun  9 14:21:05 tyleet kernel: [  206.475215] [drm:drm_mode_debug_printmodeline] Modeline 0:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa
Jun  9 14:21:05 tyleet kernel: [  206.475222] [drm:intel_dump_crtc_timings] crtc timings: 65000 1024 1048 1184 1344 768 771 777 806, type: 0x40 flags: 0xa
Jun  9 14:21:05 tyleet kernel: [  206.475225] [drm:intel_dump_pipe_config] port clock: 65000
Jun  9 14:21:05 tyleet kernel: [  206.475228] [drm:intel_dump_pipe_config] pipe src size: 1024x768
Jun  9 14:21:05 tyleet kernel: [  206.475233] [drm:intel_dump_pipe_config] gmch pfit: control: 0x00000000, ratios: 0x00000000, lvds border: 0x00000000
Jun  9 14:21:05 tyleet kernel: [  206.475237] [drm:intel_dump_pipe_config] pch pfit: pos: 0x00000000, size: 0x00000000, disabled
Jun  9 14:21:05 tyleet kernel: [  206.475240] [drm:intel_dump_pipe_config] ips: 0
Jun  9 14:21:05 tyleet kernel: [  206.475242] [drm:intel_dump_pipe_config] double wide: 0
Jun  9 14:21:05 tyleet kernel: [  206.484537] [drm:i830_get_fifo_size] FIFO size - (0x00017e5f) A: 47
Jun  9 14:21:05 tyleet kernel: [  206.484542] [drm:intel_calculate_wm] FIFO entries required for mode: 41
Jun  9 14:21:05 tyleet kernel: [  206.484544] [drm:intel_calculate_wm] FIFO watermark level: 4
Jun  9 14:21:05 tyleet kernel: [  206.484549] [drm:i830_get_fifo_size] FIFO size - (0x00017e5f) B: 48
Jun  9 14:21:05 tyleet kernel: [  206.484553] [drm:i9xx_update_wm] FIFO watermarks - A: 9, B: 31
Jun  9 14:21:05 tyleet kernel: [  206.484557] [drm:i9xx_update_wm] Setting FIFO watermarks - A: 9, B: 31, C: 2, SR 1
Jun  9 14:21:05 tyleet kernel: [  206.484569] [drm:ns2501_mode_set] set mode (hdisplay=1024,htotal=1344,vdisplay=768,vtotal=806).
Jun  9 14:21:05 tyleet kernel: [  206.540432] [drm:ns2501_dpms] Trying set the dpms of the DVO to 1
Jun  9 14:21:05 tyleet kernel: [  206.765381] [drm:i9xx_update_primary_plane] Writing base 00060000 00000000 0 0 4096
Jun  9 14:21:05 tyleet kernel: [  206.766293] [drm:intel_connector_check_state] [CONNECTOR:11:DVI-I-1]
Jun  9 14:21:05 tyleet kernel: [  206.766297] [drm:check_encoder_state] [ENCODER:9:DAC-9]
Jun  9 14:21:05 tyleet kernel: [  206.766302] [drm:check_encoder_state] [ENCODER:10:None-10]
Jun  9 14:21:05 tyleet kernel: [  206.766306] [drm:check_crtc_state] [CRTC:5]
Jun  9 14:21:05 tyleet kernel: [  206.766324] [drm:check_crtc_state] [CRTC:7]
Jun  9 14:21:05 tyleet kernel: [  206.766336] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:21:05 tyleet kernel: [  206.766340] [drm:intel_crtc_set_config] [CRTC:7] [NOFB]
Jun  9 14:21:05 tyleet kernel: [  206.766347] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:7], mode_changed=0, fb_changed=0
Jun  9 14:21:05 tyleet kernel: [  206.766353] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:21:05 tyleet kernel: [  206.766367] [drm:intel_crtc_set_config] [CRTC:5] [FB:15] #connectors=1 (x y) (0 0)
Jun  9 14:21:05 tyleet kernel: [  206.766374] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=0
Jun  9 14:21:05 tyleet kernel: [  206.766378] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:21:05 tyleet kernel: [  206.766424] [drm:intel_crtc_set_config] [CRTC:5] [FB:15] #connectors=1 (x y) (0 0)
Jun  9 14:21:05 tyleet kernel: [  206.766430] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=0
Jun  9 14:21:05 tyleet kernel: [  206.766435] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:21:05 tyleet kernel: [  206.778556] [drm:intel_crtc_set_config] [CRTC:5] [FB:15] #connectors=1 (x y) (0 0)
Jun  9 14:21:05 tyleet kernel: [  206.778563] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=0
Jun  9 14:21:05 tyleet kernel: [  206.778567] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:21:05 tyleet kernel: [  206.877563] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:21:05 tyleet kernel: [  206.877587] [drm:intel_crtc_set_config] [CRTC:5] [FB:15] #connectors=1 (x y) (0 0)
Jun  9 14:21:05 tyleet kernel: [  206.877601] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:5], mode_changed=0, fb_changed=0
Jun  9 14:21:05 tyleet kernel: [  206.877611] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:21:05 tyleet kernel: [  206.877619] [drm:intel_crtc_cursor_set] cursor off
Jun  9 14:21:05 tyleet kernel: [  206.877626] [drm:intel_crtc_set_config] [CRTC:7] [NOFB]
Jun  9 14:21:05 tyleet kernel: [  206.877635] [drm:intel_set_config_compute_mode_changes] computed changes for [CRTC:7], mode_changed=0, fb_changed=0
Jun  9 14:21:05 tyleet kernel: [  206.877643] [drm:intel_modeset_stage_output_state] [CONNECTOR:11:DVI-I-1] to [CRTC:5]
Jun  9 14:21:06 tyleet kernel: [  207.204617] fuse exit
Jun  9 14:21:06 tyleet kernel: [  207.536214] ipw2100: exit - failed to send CARD_DISABLE command
#60 lore raw

Re: Partial success - Fixing resume from s2ram on S6010

In reply to a message not in the archive

Am 09.06.2014 13:31, schrieb Ville Syrjälä:

Quoted 2 lines

So now you're using acpi_sleep=s3_bios, or nothing?

Ok, tried now with acpi_sleep=s3. Unfortunately, this hangs the machine completely during resume, I cannot even ping it.

Then, I tried the same trick again, namely unloading the i915 module before the resume, reloading it after the resume. This worked flawlessly, display came back without requiring any quirks, even with the state the bios left the hardware in.

Note again that this is different for the resume from acpi_sleep=s3 or 'nothing', where I can restore the display (though the result is a hick-up).

If there is another deadlock in i915 (not unlikely) I cannot debug it this way, unfortunately.

Unfortunately, the S6010 does not have a serial port to redirect the console to. I can only use the netconsole, though this reveals nothing. Probably the deadlock happens before the is enabled.

Greetings,
Thomas

#61 lore raw

Re: Partial success - Fixing resume from s2ram on S6010

In reply to a message not in the archive

Hi Ville, dear Intel experts,

more on the partial resume from suspend for the S6010. It seems that the culprit is really the lack of a proper initialization of the DVO. The minimum sequence to restore the display does not require to modify the 830 registers directly, but rather needs to setup the DVO.

xrandr --output DVI1 --mode 640x480

# without this, access to the DVO is blocked, thus
# all the following fails. The above initializes the
# PLLs such that the DVO can be accessed.

modprobe i2c-hid
modprobe i2c-algo-bit
modprobe i2c-dev
modprobe i2c-scmi
modprobe i2c-i801
modprobe i2c-ismt
modprobe i2c-gpio
modprobe i2c-piix4
modprobe i2c-isch
modprobe i2c-mux
modprobe i2c-core

#
# Only the following two are required.
i2cset -y 5 0x38 0x34 0x02
i2cset -y 5 0x38 0x35 0x7f

# This restores the old resolution.
xrandr --output DVI1 --mode 1024x768

Thus, it really seems that the culprit is here that the resume operation does not provide access to the DVO correctly.

Greetings,
Thomas

#62 lore raw

PATCH 1/1 drm/i915: Init important ns2501 registers

From: Ville Syrjälä <[email protected]>

In my earlier rewrite I missed a few important registers. Thomas Richter noticed that they're needed to make his machine resume correctly.

Looks like IEGD does a one time init of these three registers. We don't have a good one time init place in the ns2501 driver, so let's just stick them into the .mode_set() hook and see if that helps things along.

---
 drivers/gpu/drm/i915/dvo_ns2501.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
drivers/gpu/drm/i915/dvo_ns2501.c +10 -0
index 64103cb..4416304 100644
@@ -342,6 +342,12 @@ static const struct ns2501_reg regs_1024x768[][86] = {
 	},
 };
 
+static const struct ns2501_reg regs_init[] = {
+	[0] = { .offset = 0x35, .value = 0xff, },
+	[1] = { .offset = 0x34, .value = 0x00, },
+	[2] = { .offset = 0x08, .value = 0x30, },
+};
+
 struct ns2501_priv {
 	bool quiet;
 	const struct ns2501_reg *regs;
@@ -544,6 +550,10 @@ static void ns2501_mode_set(struct intel_dvo_device *dvo,
 	else
 		return;
 
+	/* Hopefully doing it every time won't hurt... */
+	for (i = 0; i < ARRAY_SIZE(regs_init); i++)
+		ns2501_writeb(dvo, regs_init[i].offset, regs_init[i].value);
+
 	ns->regs = regs_1024x768[mode_idx];
 
 	for (i = 0; i < 84; i++)
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

A message that is not in the archive (sent off-list or not yet received): 28223_1402343538_53961072_28223_7661_1_1402343204-28608-1-git-send-email-ville.syrjala@linux.intel.com

#64 lore raw

Re: [PATCH] drm/i915: Init important ns2501 registers

Am 09.06.2014 21:46, schrieb [email protected]:

Quoted 4 lines

From: Ville Syrjälä<[email protected]>

In my earlier rewrite I missed a few important registers. Thomas Richter noticed that they're needed to make his machine resume correctly.

Thanks, this *almost* works, much better than before. Now I only need to switch the console forth and back to get a display. However, I get a pretty unstable display on the console, and a *sometimes* unstable display on the X display. From the way it looks, I would guess that the synchronization between the display and the PLL is not quite right. Which is stunning since the 830M seems to be configured correctly.

Greetings,
Thomas

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

#65 lore raw

Re: [PATCH] drm/i915: Init important ns2501 registers

In reply to a message not in the archive

Hi Ville,

thanks for the latest patch. As said, the screen did not come back quite correctly. I checked the register values again, and I am sorry to say that I was wrong - register values do differ. Apparently, the code configures now the wrong pipe to generate output to the DVO and thus the DVO does not seem to synchronize correctly anymore. Please find the two register dumps attached.

Greetings,
Thomas

                 DCC: 0x00000000 (`7v�􂃿bFx�䂃��r�؂��d�y�)
           CHDECMISC: 0x00000000 (none, ch2 enh disabled, ch1 enh disabled, ch0 enh disabled, flex disabled, ep not present)
              C0DRB0: 0x00000000 (0x0000)
              C0DRB1: 0x00000000 (0x0000)
              C0DRB2: 0x00000000 (0x0000)
              C0DRB3: 0x00000000 (0x0000)
              C1DRB0: 0x00000000 (0x0000)
              C1DRB1: 0x00000000 (0x0000)
              C1DRB2: 0x00000000 (0x0000)
              C1DRB3: 0x00000000 (0x0000)
             C0DRA01: 0x00000000 (0x0000)
             C0DRA23: 0x00000000 (0x0000)
             C1DRA01: 0x00000000 (0x0000)
             C1DRA23: 0x00000000 (0x0000)
          PGETBL_CTL: 0x3ff60001
   VCLK_DIVISOR_VGA0: 0x00021207 (n = 2, m1 = 18, m2 = 7)
   VCLK_DIVISOR_VGA1: 0x00031406 (n = 3, m1 = 20, m2 = 6)
       VCLK_POST_DIV: 0x0000888b (vga0 p1 = 13, p2 = 4, vga1 p1 = 10, p2 = 4)
           DPLL_TEST: 0x00000000 (, DPLLA input buffer disabled, DPLLB input buffer disabled)
        CACHE_MODE_0: 0x001f0000
             D_STATE: 0x00000000
       DSPCLK_GATE_D: 0x00000008 (clock gates disabled: OVRUNIT)
      RENCLK_GATE_D1: 0x00000000
      RENCLK_GATE_D2: 0x00000000
               SDVOB: 0x90004084 (enabled, pipe A, stall disabled, detected)
               SDVOC: 0x00000000 (disabled, pipe A, stall disabled, not detected)
             SDVOUDI: 0x00000000
              DSPARB: 0x00017e5f
              DSPFW1: 0x00000000
              DSPFW2: 0x00000000
              DSPFW3: 0x00000000
                ADPA: 0x00000c00 (disabled, pipe A, -hsync, -vsync)
                LVDS: 0x00000000 (disabled, pipe A, 18 bit, 1 channel)
                DVOA: 0x00000000 (disabled, pipe A, no stall, -hsync, -vsync)
                DVOB: 0x90004084 (enabled, pipe A, stall, -hsync, -vsync)
                DVOC: 0x00000000 (disabled, pipe A, no stall, -hsync, -vsync)
         DVOA_SRCDIM: 0x00000000
         DVOB_SRCDIM: 0x00000000
         DVOC_SRCDIM: 0x00000000
          PP_CONTROL: 0x00000000 (power target: off)
           PP_STATUS: 0x00000000 (off, not ready, sequencing idle)
        PP_ON_DELAYS: 0x00000000
       PP_OFF_DELAYS: 0x00000000
          PP_DIVISOR: 0x00000000
        PFIT_CONTROL: 0x00000000
     PFIT_PGM_RATIOS: 0x00000000
     PORT_HOTPLUG_EN: 0x00000000
   PORT_HOTPLUG_STAT: 0x00000000
            DSPACNTR: 0xd8000000 (enabled, pipe A)
          DSPASTRIDE: 0x00002000 (8192 bytes)
             DSPAPOS: 0x00000000 (0, 0)
            DSPASIZE: 0x02ff03ff (1024, 768)
            DSPABASE: 0x02000000
            DSPASURF: 0x00000000
         DSPATILEOFF: 0x00000000
           PIPEACONF: 0x80000000 (enabled, single-wide)
            PIPEASRC: 0x03ff02ff (1024, 768)
           PIPEASTAT: 0x10000207 (status: CRC_DONE_ENABLE VSYNC_INT_STATUS SVBLANK_INT_STATUS VBLANK_INT_STATUS OREG_UPDATE_STATUS)
   PIPEA_GMCH_DATA_M: 0x00000000
   PIPEA_GMCH_DATA_N: 0x00000000
     PIPEA_DP_LINK_M: 0x00000000
     PIPEA_DP_LINK_N: 0x00000000
       CURSOR_A_BASE: 0x3524c000
    CURSOR_A_CONTROL: 0x04000027
   CURSOR_A_POSITION: 0x00d50133
                FPA0: 0x0004150d (n = 4, m1 = 21, m2 = 13)
                FPA1: 0x0004150d (n = 4, m1 = 21, m2 = 13)
              DPLL_A: 0xd0820000 (enabled, dvo, default clock, DAC/serial mode, p1 = 4, p2 = 4)
           DPLL_A_MD: 0x00000000
            HTOTAL_A: 0x053f03ff (1024 active, 1344 total)
            HBLANK_A: 0x053f03ff (1024 start, 1344 end)
             HSYNC_A: 0x049f0417 (1048 start, 1184 end)
            VTOTAL_A: 0x032502ff (768 active, 806 total)
            VBLANK_A: 0x032502ff (768 start, 806 end)
             VSYNC_A: 0x03080302 (771 start, 777 end)
           BCLRPAT_A: 0x00000000
        VSYNCSHIFT_A: 0x00000000
            DSPBCNTR: 0x00000000 (disabled, pipe A)
          DSPBSTRIDE: 0x00000000 (0 bytes)
             DSPBPOS: 0x00000000 (0, 0)
            DSPBSIZE: 0x00000000 (1, 1)
            DSPBBASE: 0x00000000
            DSPBSURF: 0x00000000
         DSPBTILEOFF: 0x00000000
           PIPEBCONF: 0x00000000 (disabled, single-wide)
            PIPEBSRC: 0x00000000 (1, 1)
           PIPEBSTAT: 0x10000004 (status: CRC_DONE_ENABLE SVBLANK_INT_STATUS)
   PIPEB_GMCH_DATA_M: 0x00000000
   PIPEB_GMCH_DATA_N: 0x00000000
     PIPEB_DP_LINK_M: 0x00000000
     PIPEB_DP_LINK_N: 0x00000000
       CURSOR_B_BASE: 0x00000000
    CURSOR_B_CONTROL: 0x00000000
   CURSOR_B_POSITION: 0x00000000
                FPB0: 0x00021207 (n = 2, m1 = 18, m2 = 7)
                FPB1: 0x00021207 (n = 2, m1 = 18, m2 = 7)
              DPLL_B: 0x408b0000 (disabled, dvo, VGA, default clock, DAC/serial mode, p1 = 13, p2 = 4)
           DPLL_B_MD: 0x00000000
            HTOTAL_B: 0x00000000 (1 active, 1 total)
            HBLANK_B: 0x00000000 (1 start, 1 end)
             HSYNC_B: 0x00000000 (1 start, 1 end)
            VTOTAL_B: 0x00000000 (1 active, 1 total)
            VBLANK_B: 0x00000000 (1 start, 1 end)
             VSYNC_B: 0x00000000 (1 start, 1 end)
           BCLRPAT_B: 0x00000000
        VSYNCSHIFT_B: 0x00000000
   VCLK_DIVISOR_VGA0: 0x00021207
   VCLK_DIVISOR_VGA1: 0x00031406
       VCLK_POST_DIV: 0x0000888b
            VGACNTRL: 0x8124008e (disabled)
              TV_CTL: 0x00000000
              TV_DAC: 0x00000000
            TV_CSC_Y: 0x00000000
           TV_CSC_Y2: 0x00000000
            TV_CSC_U: 0x00000000
           TV_CSC_U2: 0x00000000
            TV_CSC_V: 0x00000000
           TV_CSC_V2: 0x00000000
        TV_CLR_KNOBS: 0x00000000
        TV_CLR_LEVEL: 0x00000000
          TV_H_CTL_1: 0x00000000
          TV_H_CTL_2: 0x00000000
          TV_H_CTL_3: 0x00000000
          TV_V_CTL_1: 0x00000000
          TV_V_CTL_2: 0x00000000
          TV_V_CTL_3: 0x00000000
          TV_V_CTL_4: 0x00000000
          TV_V_CTL_5: 0x00000000
          TV_V_CTL_6: 0x00000000
          TV_V_CTL_7: 0x00000000
         TV_SC_CTL_1: 0x00000000
         TV_SC_CTL_2: 0x00000000
         TV_SC_CTL_3: 0x00000000
          TV_WIN_POS: 0x00000000
         TV_WIN_SIZE: 0x00000000
     TV_FILTER_CTL_1: 0x00000000
     TV_FILTER_CTL_2: 0x00000000
     TV_FILTER_CTL_3: 0x00000000
       TV_CC_CONTROL: 0x00000000
          TV_CC_DATA: 0x00000000
         TV_H_LUMA_0: 0x00000000
        TV_H_LUMA_59: 0x00000000
       TV_H_CHROMA_0: 0x00000000
      TV_H_CHROMA_59: 0x00000000
        FBC_CFB_BASE: 0x00000000
         FBC_LL_BASE: 0x00000000
         FBC_CONTROL: 0x00000000
         FBC_COMMAND: 0x00000000
          FBC_STATUS: 0x00000000
        FBC_CONTROL2: 0x00000000
       FBC_FENCE_OFF: 0x00000000
         FBC_MOD_NUM: 0x00000000
             MI_MODE: 0x00000000
        MI_ARB_STATE: 0x00000000
      MI_RDRET_STATE: 0x00000000
             ECOSKPD: 0x00000307
                DP_B: 0x00000000
      DPB_AUX_CH_CTL: 0x00000000
    DPB_AUX_CH_DATA1: 0x00000000
    DPB_AUX_CH_DATA2: 0x00000000
    DPB_AUX_CH_DATA3: 0x00000000
    DPB_AUX_CH_DATA4: 0x00000000
    DPB_AUX_CH_DATA5: 0x00000000
                DP_C: 0x00000000
      DPC_AUX_CH_CTL: 0x00000000
    DPC_AUX_CH_DATA1: 0x00000000
    DPC_AUX_CH_DATA2: 0x00000000
    DPC_AUX_CH_DATA3: 0x00000000
    DPC_AUX_CH_DATA4: 0x00000000
    DPC_AUX_CH_DATA5: 0x00000000
                DP_D: 0x00000000
      DPD_AUX_CH_CTL: 0x00000000
    DPD_AUX_CH_DATA1: 0x00000000
    DPD_AUX_CH_DATA2: 0x00000000
    DPD_AUX_CH_DATA3: 0x00000000
    DPD_AUX_CH_DATA4: 0x00000000
    DPD_AUX_CH_DATA5: 0x00000000
          AUD_CONFIG: 0x00000000
    AUD_HDMIW_STATUS: 0x00000000
      AUD_CONV_CHCNT: 0x00000000
       VIDEO_DIP_CTL: 0x00000000
       AUD_PINW_CNTR: 0x00000000
         AUD_CNTL_ST: 0x00000000
         AUD_PIN_CAP: 0x00000000
        AUD_PINW_CAP: 0x00000000
  AUD_PINW_UNSOLRESP: 0x00000000
    AUD_OUT_DIG_CNVT: 0x00000000
       AUD_OUT_CWCAP: 0x00000000
         AUD_GRP_CAP: 0x00000000
            FENCE  0: 0x05000561 (enabled, X tiled, 32768 pitch, 0x05000000 - 0x07000000 (32768kb))
            FENCE  1: 0x03800351 (enabled, X tiled, 16384 pitch, 0x03800000 - 0x04000000 (8192kb))
            FENCE  2: 0x06000351 (enabled, X tiled, 16384 pitch, 0x06000000 - 0x06800000 (8192kb))
            FENCE  3: 0x00000000 (disabled)
            FENCE  4: 0x02000561 (enabled, X tiled, 32768 pitch, 0x02000000 - 0x04000000 (32768kb))
            FENCE  5: 0x00000000 (disabled)
            FENCE  6: 0x00600251 (enabled, X tiled, 16384 pitch, 0x00600000 - 0x00a00000 (4096kb))
            FENCE  7: 0x00000000 (disabled)
            FENCE  8: 0x00000000 (disabled)
            FENCE  9: 0x00000000 (disabled)
           FENCE  10: 0x00000000 (disabled)
           FENCE  11: 0x00000000 (disabled)
           FENCE  12: 0x00000048 (disabled)
           FENCE  13: 0x00000002 (disabled)
           FENCE  14: 0x00000000 (disabled)
           FENCE  15: 0x00000000 (disabled)
       FENCE START 0: 0x00000000 (disabled)
         FENCE END 0: 0x00000000 (disabled)
       FENCE START 1: 0x00000000 (disabled)
         FENCE END 1: 0x00000000 (disabled)
       FENCE START 2: 0x00000048 (disabled)
         FENCE END 2: 0x00000002 (disabled)
       FENCE START 3: 0x00000000 (disabled)
         FENCE END 3: 0x00000000 (disabled)
       FENCE START 4: 0x00000000 (disabled)
         FENCE END 4: 0x00000000 (disabled)
       FENCE START 5: 0x00000000 (disabled)
         FENCE END 5: 0x00000000 (disabled)
       FENCE START 6: 0x00000000 (disabled)
         FENCE END 6: 0x00000000 (disabled)
       FENCE START 7: 0x00000000 (disabled)
         FENCE END 7: 0x00000000 (disabled)
       FENCE START 8: 0x00000000 (disabled)
         FENCE END 8: 0x00000000 (disabled)
       FENCE START 9: 0x00000000 (disabled)
         FENCE END 9: 0x00000000 (disabled)
      FENCE START 10: 0x00000000 (disabled)
        FENCE END 10: 0x00000000 (disabled)
      FENCE START 11: 0x00000000 (disabled)
        FENCE END 11: 0x00000000 (disabled)
      FENCE START 12: 0x00000000 (disabled)
        FENCE END 12: 0x00000000 (disabled)
      FENCE START 13: 0x00000000 (disabled)
        FENCE END 13: 0x00000000 (disabled)
      FENCE START 14: 0x00000000 (disabled)
        FENCE END 14: 0x00000000 (disabled)
      FENCE START 15: 0x00000000 (disabled)
        FENCE END 15: 0x00000000 (disabled)
             INST_PM: 0x00000000

pipe A dot 65000 n 4 m1 21 m2 13 p1 4 p2 4
pipe B dot 25153 n 2 m1 18 m2 7 p1 13 p2 4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

#66 lore raw

Re: [PATCH] drm/i915: Init important ns2501 registers

Quoted 9 lines · Thomas Richter

Hi Ville,

thanks for the latest patch. As said, the screen did not come back quite correctly. I checked the register values
again, and I am sorry to say that I was wrong - register values do differ. Apparently, the code configures now
the wrong pipe to generate output to the DVO and thus the DVO does not seem to synchronize correctly
anymore. Please find the two register dumps attached.

Either pipe can drive DVO just fine. Looks like it's using pipe A in your register dump, and all the registers look fine to me. Well, DPLL B VCO enable is off since we don't currently have a mechanism to kick pipe B into action during resume/load. In theory that would need to be enabled as well.

Can you see if a simple 'intel_reg_write 0x6018 0xc08b0000' fixes the problem?

And if not, I'd like to see a diff of register dumps between working and non working setups.

Signature · 2 lines
Ville Syrjälä
Intel OTC

A message that is not in the archive (sent off-list or not yet received): 29040_1402409145_539710B9_29040_2220_1_20140610140430.GD27580@intel.com

#68 lore raw

Re: [PATCH] drm/i915: Init important ns2501 registers

Hi Ville,

Quoted 8 lines

Either pipe can drive DVO just fine. Looks like it's using pipe A in your register dump, and all the registers look fine to me. Well, DPLL B VCO enable is off since we don't currently have a mechanism to kick pipe B into action during resume/load. In theory that would need to be enabled as well.

Can you see if a simple 'intel_reg_write 0x6018 0xc08b0000' fixes the problem?

Nope. I created a little script that wrote the previous data back into the chipset, but that did not cure the problem. The only register I could not write to was CACHEMODE (IIRC, this was the name intel_reg_dump gave). The plane pointers and cursor pointers were different, too, but that should not be critical.

Quoted 2 lines

And if not, I'd like to see a diff of register dumps between working and non working setups.

I afraid the S6010 is out of reach for the next three weeks, but I should have a complete register dump attached to my previous mail from yesterday night (or this morning, to be precise).

I can now try on the R31, but I don't remember having seen anything like it there. It does *not* look like the flickering of the misaligned watermark registers - on the console it really looks like bad HSYNC on a TV (tearing across horizontal lines, and massive misalignments of the very first lines of the screen). Within X, it causes the screen to jump to the right by about 64(?)128(?) pixels. The problem does not disappear by using a different resolution or restarting X. It remains permanent until the next boot.

Greetings,
Thomas

#69 lore raw

i830GM on IBM R31 works with alm_fixes5 repository

In reply to a message not in the archive

Hi Ville,

thanks again for your alm_fixes5 branch. Just installed it on the old R31 - this seems to work fine. The external monitor works (unlike with intel_drm_nightly, which is broken), and watermarks are also setup correctly. Booting works correctly, boot console is setup correctly.

Suspend to RAM does not work, but this does not seem to be the fault of the i915 and drm modules. Even with almost all modules unloaded, the machine hangs when trying to resume. The suspend2ram tests all work fine (i.e. freezing tasks, devices...), but as soon as I use a real suspend (no testing), the machine does not wake up. The s3_sleep kernel parameter is not able to work around this, i.e. there is no combination which makes this working. The BIOS is the latest version I could find (ancient, still) but no avail.

Machine remains completely unresponsive, no network, no mouse, no keyboard, no video, no sound. The pm-suspend rtc debugging tricks do not reveal in which kernel module the machine hangs, nothing seems to match the recorded hash. The problem must appear pretty early in the call-chain.

Anyhow, this is not i915 related as it seems, so nothing to fix here. I'll try to find out a bit more on this if I can.

Greetings,
Thomas

#70 lore raw

Re: [PATCH] drm/i915: Avoid double mutex lock applying pipe A quirk during sanitize_crtc()

In reply to Ville Syrjälä
Quoted 7 lines · Ville Syrjälä
Quoted 6 lines · Chris Wilson

Thomas found that his machine would deadlock reloading the i915.ko module after resume. He identified that this was caused by the reacquisition of the connection mutex inside intel_enable_pipe_a() during the CRTC sanitization routine. This will only affect machines that quirk PIPE A, i.e. the original 830m chipsets.

Quoted 7 lines
Quoted 3 lines

This patch move the locking into a wrapper function so that intel_enable_pipe_a() can bypass the locking knowing that it already holds the correct locks.

It can still try to grab crtc->mutex twice. Looks like Danial undid my fix to not take all the modeset locks around intel_modeset_setup_hw_state().

Hm, I didn't find anything in git logs and we've had places where we used modeset_lock_all since a long time. And I don't see how Chris' patch wouldn't address this here. Can you please explain?

Thanks, Daniel

Quoted 133 lines
Quoted 129 lines
Cc Thomas Richter <[email protected]>
Cc Daniel Vetter <[email protected]>
Cc Ville Syrjälä <[email protected]>
---
 drivers/gpu/drm/i915/intel_display.c |   54 ++++++++++++++++++++++------------
 1 file changed, 35 insertions(+), 19 deletions(-)
drivers/gpu/drm/i915/intel_display.c +35 -19
index c1f79a1..26d3424 100644
@@ -8387,9 +8387,10 @@ mode_fits_in_fbdev(struct drm_device *dev,
 #endif
 }
 
-bool intel_get_load_detect_pipe(struct drm_connector *connector,
-				struct drm_display_mode *mode,
-				struct intel_load_detect_pipe *old)
+static bool
+__intel_get_load_detect_pipe(struct drm_connector *connector,
+			     struct drm_display_mode *mode,
+			     struct intel_load_detect_pipe *old)
 {
 	struct intel_crtc *intel_crtc;
 	struct intel_encoder *intel_encoder =
@@ -8405,7 +8406,7 @@ bool intel_get_load_detect_pipe(struct drm_connector *connector,
 		      connector->base.id, connector->name,
 		      encoder->base.id, encoder->name);
 
-	mutex_lock(&dev->mode_config.connection_mutex);
+	lockdep_assert_held(&dev->mode_config.connection_mutex);
 
 	/*
 	 * Algorithm gets a little messy:
@@ -8449,7 +8450,7 @@ bool intel_get_load_detect_pipe(struct drm_connector *connector,
 	 */
 	if (!crtc) {
 		DRM_DEBUG_KMS("no pipe available for load-detect\n");
-		goto fail_unlock_connector;
+		return false;
 	}
 
 	mutex_lock(&crtc->mutex);
@@ -8503,14 +8504,13 @@ bool intel_get_load_detect_pipe(struct drm_connector *connector,
 	else
 		intel_crtc->new_config = NULL;
 	mutex_unlock(&crtc->mutex);
-fail_unlock_connector:
-	mutex_unlock(&dev->mode_config.connection_mutex);
 
 	return false;
 }
 
-void intel_release_load_detect_pipe(struct drm_connector *connector,
-				    struct intel_load_detect_pipe *old)
+static void
+__intel_release_load_detect_pipe(struct drm_connector *connector,
+				 struct intel_load_detect_pipe *old)
 {
 	struct intel_encoder *intel_encoder =
 		intel_attached_encoder(connector);
@@ -8518,6 +8518,8 @@ void intel_release_load_detect_pipe(struct drm_connector *connector,
 	struct drm_crtc *crtc = encoder->crtc;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 
+	lockdep_assert_held(&connector->dev->mode_config.connection_mutex);
+
 	DRM_DEBUG_KMS("[CONNECTOR:%d:%s], [ENCODER:%d:%s]\n",
 		      connector->base.id, connector->name,
 		      encoder->base.id, encoder->name);
@@ -8533,17 +8535,32 @@ void intel_release_load_detect_pipe(struct drm_connector *connector,
 			drm_framebuffer_unregister_private(old->release_fb);
 			drm_framebuffer_unreference(old->release_fb);
 		}
+	} else {
+		/* Switch crtc and encoder back off if necessary */
+		if (old->dpms_mode != DRM_MODE_DPMS_ON)
+			connector->funcs->dpms(connector, old->dpms_mode);
+	}
+	mutex_unlock(&crtc->mutex);
+}
 
-		mutex_unlock(&crtc->mutex);
+bool intel_get_load_detect_pipe(struct drm_connector *connector,
+				struct drm_display_mode *mode,
+				struct intel_load_detect_pipe *old)
+{
+	mutex_lock(&connector->dev->mode_config.connection_mutex);
+	if (!__intel_get_load_detect_pipe(connector, mode, old)) {
 		mutex_unlock(&connector->dev->mode_config.connection_mutex);
-		return;
+		return false;
 	}
 
-	/* Switch crtc and encoder back off if necessary */
-	if (old->dpms_mode != DRM_MODE_DPMS_ON)
-		connector->funcs->dpms(connector, old->dpms_mode);
+	/* lock will be released by intel_release_load_detect_pipe() */
+	return true;
+}
 
-	mutex_unlock(&crtc->mutex);
+void intel_release_load_detect_pipe(struct drm_connector *connector,
+				    struct intel_load_detect_pipe *old)
+{
+	__intel_release_load_detect_pipe(connector, old);
 	mutex_unlock(&connector->dev->mode_config.connection_mutex);
 }
 
@@ -12354,10 +12371,9 @@ static void intel_enable_pipe_a(struct drm_device *dev)
 	if (!crt)
 		return;
 
-	if (intel_get_load_detect_pipe(crt, NULL, &load_detect_temp))
-		intel_release_load_detect_pipe(crt, &load_detect_temp);
-
-
+	lockdep_assert_held(&dev->mode_config.connection_mutex);
+	if (__intel_get_load_detect_pipe(crt, NULL, &load_detect_temp))
+		__intel_release_load_detect_pipe(crt, &load_detect_temp);
 }
 
 static bool
Signature · 1 line
1.7.9.5
Signature · 2 lines
Ville Syrjälä
Intel OTC
Signature · 3 lines
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
#71 lore raw

Re: [PATCH] drm/i915: Avoid double mutex lock applying pipe A quirk during sanitize_crtc()

Quoted 12 lines · Daniel Vetter
Quoted 11 lines · Ville Syrjälä
Quoted 9 lines · Chris Wilson

Thomas found that his machine would deadlock reloading the i915.ko module after resume. He identified that this was caused by the reacquisition of the connection mutex inside intel_enable_pipe_a() during the CRTC sanitization routine. This will only affect machines that quirk PIPE A, i.e. the original 830m chipsets.

This patch move the locking into a wrapper function so that intel_enable_pipe_a() can bypass the locking knowing that it already holds the correct locks.

Quoted 7 lines
Quoted 3 lines

It can still try to grab crtc->mutex twice. Looks like Danial undid my fix to not take all the modeset locks around intel_modeset_setup_hw_state().

Hm, I didn't find anything in git logs and we've had places where we used modeset_lock_all since a long time. And I don't see how Chris' patch wouldn't address this here. Can you please explain?

I added the modeset_all locking here:
commit 027476642811f8559cbe00ef6cc54db230e48a20
Author: Ville Syrjälä <[email protected]>
Date: Mon Dec 2 11:08:06 2013 +0200

drm/i915: Take modeset locks around intel_modeset_setup_hw_state()

and then had to reduce it to just the mode_config.mutex precisely due to the pipe A quirk here:
commit 7ad228b11ec26a820291c9f5a1168d6176580dc1
Author: Ville Syrjälä <[email protected]>
Date: Tue Jan 7 16:15:36 2014 +0200

drm/i915: Don't grab crtc mutexes in intel_modeset_gem_init()

Signature · 2 lines
Ville Syrjälä
Intel OTC
#72 lore raw

Re: [PATCH] drm/i915: Avoid double mutex lock applying pipe A quirk during sanitize_crtc()

Quoted 28 lines · Ville Syrjälä
Quoted 12 lines · Daniel Vetter
Quoted 11 lines · Ville Syrjälä
Quoted 9 lines · Chris Wilson

Thomas found that his machine would deadlock reloading the i915.ko module after resume. He identified that this was caused by the reacquisition of the connection mutex inside intel_enable_pipe_a() during the CRTC sanitization routine. This will only affect machines that quirk PIPE A, i.e. the original 830m chipsets.

This patch move the locking into a wrapper function so that intel_enable_pipe_a() can bypass the locking knowing that it already holds the correct locks.

Quoted 7 lines
Quoted 3 lines

It can still try to grab crtc->mutex twice. Looks like Danial undid my fix to not take all the modeset locks around intel_modeset_setup_hw_state().

Hm, I didn't find anything in git logs and we've had places where we used modeset_lock_all since a long time. And I don't see how Chris' patch wouldn't address this here. Can you please explain?

I added the modeset_all locking here:
commit 027476642811f8559cbe00ef6cc54db230e48a20
Author: Ville Syrjälä <[email protected]>
Date: Mon Dec 2 11:08:06 2013 +0200

drm/i915: Take modeset locks around intel_modeset_setup_hw_state()

Quoted 7 lines

and then had to reduce it to just the mode_config.mutex precisely due to the pipe A quirk here:
commit 7ad228b11ec26a820291c9f5a1168d6176580dc1
Author: Ville Syrjälä <[email protected]>
Date: Tue Jan 7 16:15:36 2014 +0200

drm/i915: Don't grab crtc mutexes in intel_modeset_gem_init()

Hm, indeed missed this since we have a bunch of other places that still do the full modeset_lock_all, but probably not possible to hit the pipe A quirk there. The ww mutex code makes this a bit more annoying so I guess Chris' patch with having a lock-less pipe A quirk is the way to go.

But that one needs to be updated for latest drm-next/-nightly. -Daniel

Signature · 3 lines
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
#73 lore raw

Re: [PATCH] drm/i915: Avoid double mutex lock applying pipe A quirk during sanitize_crtc()

In reply to Chris Wilson
Quoted 83 lines · Chris Wilson

Thomas found that his machine would deadlock reloading the i915.ko module after resume. He identified that this was caused by the reacquisition of the connection mutex inside intel_enable_pipe_a() during the CRTC sanitization routine. This will only affect machines that quirk PIPE A, i.e. the original 830m chipsets.

This patch move the locking into a wrapper function so that intel_enable_pipe_a() can bypass the locking knowing that it already holds the correct locks.

Cc Thomas Richter <[email protected]>
Cc Daniel Vetter <[email protected]>
Cc Ville Syrjälä <[email protected]>
---
 drivers/gpu/drm/i915/intel_display.c |   54 ++++++++++++++++++++++------------
 1 file changed, 35 insertions(+), 19 deletions(-)
drivers/gpu/drm/i915/intel_display.c +11 -9
index c1f79a1..26d3424 100644
@@ -8387,9 +8387,10 @@ mode_fits_in_fbdev(struct drm_device *dev,
 #endif
 }
 
-bool intel_get_load_detect_pipe(struct drm_connector *connector,
-				struct drm_display_mode *mode,
-				struct intel_load_detect_pipe *old)
+static bool
+__intel_get_load_detect_pipe(struct drm_connector *connector,
+			     struct drm_display_mode *mode,
+			     struct intel_load_detect_pipe *old)
 {
 	struct intel_crtc *intel_crtc;
 	struct intel_encoder *intel_encoder =
@@ -8405,7 +8406,7 @@ bool intel_get_load_detect_pipe(struct drm_connector *connector,
 		      connector->base.id, connector->name,
 		      encoder->base.id, encoder->name);
 
-	mutex_lock(&dev->mode_config.connection_mutex);
+	lockdep_assert_held(&dev->mode_config.connection_mutex);
 
 	/*
 	 * Algorithm gets a little messy:
@@ -8449,7 +8450,7 @@ bool intel_get_load_detect_pipe(struct drm_connector *connector,
 	 */
 	if (!crtc) {
 		DRM_DEBUG_KMS("no pipe available for load-detect\n");
-		goto fail_unlock_connector;
+		return false;
 	}
 
 	mutex_lock(&crtc->mutex);
@@ -8503,14 +8504,13 @@ bool intel_get_load_detect_pipe(struct drm_connector *connector,
 	else
 		intel_crtc->new_config = NULL;
 	mutex_unlock(&crtc->mutex);
-fail_unlock_connector:
-	mutex_unlock(&dev->mode_config.connection_mutex);
 
 	return false;
 }
 
-void intel_release_load_detect_pipe(struct drm_connector *connector,
-				    struct intel_load_detect_pipe *old)
+static void
+__intel_release_load_detect_pipe(struct drm_connector *connector,
+				 struct intel_load_detect_pipe *old)
 {
 	struct intel_encoder *intel_encoder =
 		intel_attached_encoder(connector);
@@ -8518,6 +8518,8 @@ void intel_release_load_detect_pipe(struct drm_connector *connector,
 	struct drm_crtc *crtc = encoder->crtc;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 
+	lockdep_assert_held(&connector->dev->mode_config.connection_mutex);
+
 	DRM_DEBUG_KMS("[CONNECTOR:%d:%s], [ENCODER:%d:%s]\n",
 		      connector->base.id, connector->name,
 		      encoder->base.id, encoder->name);

drivers/gpu/drm/i915/intel_display.c void intel_release_load_detect_pipe(struct drm_connector *connector, · line 8542

Quoted 8 lines
drivers/gpu/drm/i915/intel_display.c +5 -0
@@ -8533,17 +8535,32 @@ void intel_release_load_detect_pipe(struct drm_connector *connector,
 			drm_framebuffer_unregister_private(old->release_fb);
 			drm_framebuffer_unreference(old->release_fb);
 		}
+	} else {
+		/* Switch crtc and encoder back off if necessary */
+		if (old->dpms_mode != DRM_MODE_DPMS_ON)
+			connector->funcs->dpms(connector, old->dpms_mode);
+	}

This part looks like an unrelated change?
-Daniel

Quoted 47 lines
drivers/gpu/drm/i915/intel_display.c +19 -10
+	mutex_unlock(&crtc->mutex);
+}
 
-		mutex_unlock(&crtc->mutex);
+bool intel_get_load_detect_pipe(struct drm_connector *connector,
+				struct drm_display_mode *mode,
+				struct intel_load_detect_pipe *old)
+{
+	mutex_lock(&connector->dev->mode_config.connection_mutex);
+	if (!__intel_get_load_detect_pipe(connector, mode, old)) {
 		mutex_unlock(&connector->dev->mode_config.connection_mutex);
-		return;
+		return false;
 	}
 
-	/* Switch crtc and encoder back off if necessary */
-	if (old->dpms_mode != DRM_MODE_DPMS_ON)
-		connector->funcs->dpms(connector, old->dpms_mode);
+	/* lock will be released by intel_release_load_detect_pipe() */
+	return true;
+}
 
-	mutex_unlock(&crtc->mutex);
+void intel_release_load_detect_pipe(struct drm_connector *connector,
+				    struct intel_load_detect_pipe *old)
+{
+	__intel_release_load_detect_pipe(connector, old);
 	mutex_unlock(&connector->dev->mode_config.connection_mutex);
 }
 
@@ -12354,10 +12371,9 @@ static void intel_enable_pipe_a(struct drm_device *dev)
 	if (!crt)
 		return;
 
-	if (intel_get_load_detect_pipe(crt, NULL, &load_detect_temp))
-		intel_release_load_detect_pipe(crt, &load_detect_temp);
-
-
+	lockdep_assert_held(&dev->mode_config.connection_mutex);
+	if (__intel_get_load_detect_pipe(crt, NULL, &load_detect_temp))
+		__intel_release_load_detect_pipe(crt, &load_detect_temp);
 }
 
 static bool
Signature · 1 line
1.7.9.5
Signature · 3 lines
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
#74 lore raw

Re: [PATCH] drm/i915: Avoid double mutex lock applying pipe A quirk during sanitize_crtc()

Quoted 8 lines · Daniel Vetter

drivers/gpu/drm/i915/intel_display.c void intel_release_load_detect_pipe(struct drm_connector *connector, · line 8542

Quoted 5 lines · Chris Wilson
drivers/gpu/drm/i915/intel_display.c +5 -0
+	} else {
+		/* Switch crtc and encoder back off if necessary */
+		if (old->dpms_mode != DRM_MODE_DPMS_ON)
+			connector->funcs->dpms(connector, old->dpms_mode);
+	}

This part looks like an unrelated change?

It's just diff. The change was to rejig the braces to remove the duplicated unlock + return.
-Chris

Signature · 1 line
Chris Wilson, Intel Open Source Technology Centre
#75 lore raw

[PATCH 18/15] drm/i915: Preserve VGACNTR bits from the BIOS

In reply to [email protected]

From: Ville Syrjälä <[email protected]>

My Fujistsu-Siemens Lifebook S6010 doesn't like to resume from S3 unless VGACNTR has been restore to the original value. The BIOS value in this case was 0x0124008E. Setting the "VGA disable" bit doesn't interfere with the S3 resume fortunately.

---
 drivers/gpu/drm/i915/i915_drv.h      | 2 ++
 drivers/gpu/drm/i915/intel_display.c | 8 +++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)
drivers/gpu/drm/i915/i915_drv.h +2 -0
index 10e9f68..c1862c8 100644
@@ -1541,6 +1541,8 @@ struct drm_i915_private {
 	/* used to control DVO 2x clock enable on 830M */
 	uint8_t dvo_pipes;
 
+	uint32_t bios_vgacntr;
+
 	/* Old dri1 support infrastructure, beware the dragons ya fools entering
 	 * here! */
 	struct i915_dri1_state dri1;
drivers/gpu/drm/i915/intel_display.c +7 -1
index 4004605..12f7e8c 100644
@@ -11946,7 +11946,11 @@ static void i915_disable_vga(struct drm_device *dev)
 	vga_put(dev->pdev, VGA_RSRC_LEGACY_IO);
 	udelay(300);
 
-	I915_WRITE(vga_reg, VGA_DISP_DISABLE);
+	/*
+	 * Fujitsu-Siemens Lifebook S6010 (830) has problems resuming
+	 * from S3 without preserving (some of?) the other bits.
+	 */
+	I915_WRITE(vga_reg, dev_priv->bios_vgacntr | VGA_DISP_DISABLE);
 	POSTING_READ(vga_reg);
 }
 
@@ -12033,6 +12037,8 @@ void intel_modeset_init(struct drm_device *dev)
 	intel_cpu_pll_init(dev);
 	intel_shared_dpll_init(dev);
 
+	/* save the BIOS value before clobbering it */
+	dev_priv->bios_vgacntr = I915_READ(i915_vgacntrl_reg(dev));
 	/* Just disable it once at startup */
 	i915_disable_vga(dev);
 	intel_setup_outputs(dev);
Signature · 6 lines
1.8.5.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx