Bug 615649

Summary: intel [945G/965GM/G45] System freezes in GNOME/KDE (sometimes)
Product: [openSUSE] openSUSE 11.3 Reporter: Atri Bhattacharya <badshah400>
Component: X.OrgAssignee: Stefan Dirsch <sndirsch>
Status: RESOLVED DUPLICATE QA Contact: E-mail List <xorg-maintainer-bugs>
Severity: Critical    
Priority: P3 - Medium CC: anubis1, bitti, cfeck, daniel, djmills, fernando.lopresti, forgotten_CSGA97KGGE, forgotten_q1-mW4hKuE, gagarin.gtn, lee_matheson, maelstrom2001, martin.frueh, octo777, petkovic_bojan_law, quentin, sbrabec, sndirsch, vankan, victor.grischenko, wanganyi-guzheng, wim.demeester, wipo.cl, xavier
Version: Final   
Target Milestone: ---   
Hardware: x86-64   
OS: openSUSE 11.3   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Attachments: YaST logs
Archive containing /var/log/Xorg.*.log.old and /var/log/messages
/var/log/warn
YaST2 logs (save_y2logs)
/var/log/messages
/var/log/warn
Xorg.0.log and Xorg.0.log.old
Xorg.0.log.old
/var/log/messages
OpenSUSE 11.4 RC1 Xorg.log for HP530 (Suspended effects)

Description Atri Bhattacharya 2010-06-19 00:02:43 UTC
User-Agent:       Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.4) Gecko/20100527 SUSE/3.6.4-2.2 Firefox/3.6.4

Immediately after the installation of RC1 system followed by installation of recommended packages, I tried to change a wallpaper in GNOME, and the system froze critically. Neither Ctrl+Alt+Baackspace nor the emergency reboot key sequence [Alt+SysRq+B] worked.

Leads to loss of data, hence marked critical.

Reproducible: Sometimes

Steps to Reproduce:
1.
2.
3.
Comment 1 Atri Bhattacharya 2010-06-19 00:05:25 UTC
Created attachment 370245 [details]
YaST logs
Comment 2 Jozef Uhliarik 2010-06-21 08:42:35 UTC
It seems like GNOME problem.
Comment 3 Stanislav Brabec 2010-06-21 13:15:58 UTC
It's very unprobably GNOME issue. It is more probably a X or kernel issue.

Is your system configured to respond to Alt+SysRq+B?

cat /proc/sys/kernel/sysrq

and /etc/sysconfig/sysctl

Are you able to provide /var/log/messages, /var/log/warn and ~/.xsession-errors immediately preceeding the crash?

Are you able to ping or login to the crashed machine?

Can you attach a serial console cable, boot with serial console and log the crash messages? See /usr/src/linux/Documentation/serial-console.txt (kernel-source package) for more.
Comment 4 Atri Bhattacharya 2010-06-22 09:01:00 UTC
(In reply to comment #3)

Since I am unable to trigger the problem as I want, I can only answer most of these questions the next time I encounter such a freeze. As regards the Alt+SysRq+B, it is as is default on the system, which was till 11.2 enabled. I am not sure if it is still the case in 11.3, but I will get back to reporting this soon.

Thanks
Comment 5 Stanislav Brabec 2010-06-22 14:21:00 UTC
Yes, it should be on (set to 176) by default.

Adding X maintainer to Cc. They may be aware of similar reports.

Your logs indicate, that your graphic card is Intel 82945G/GZ Integrated Graphics Controller rev 2.
Comment 6 Stefan Dirsch 2010-06-22 15:24:08 UTC
Most important files are 

/var/log/messages
/var/log/Xorg.0.log.old (if rebooted into runlevel 5)
Comment 7 Atri Bhattacharya 2010-06-22 17:37:28 UTC
Created attachment 370907 [details]
Archive containing /var/log/Xorg.*.log.old and /var/log/messages
Comment 8 Atri Bhattacharya 2010-06-22 17:38:35 UTC
(In reply to comment #5)
> Yes, it should be on (set to 176) by default.
> 

Yes it is set to 176

cat /proc/sys/kernel/sysrq
176
Comment 9 Atri Bhattacharya 2010-06-22 17:43:37 UTC
Created attachment 370910 [details]
/var/log/warn

(In reply to comment #3)
>  Are you able to provide /var/log/messages, /var/log/warn and ~/.xsession-errors
> immediately preceeding the crash?
> 

Attached the complete file /var/log/warn
Comment 10 Stefan Dirsch 2010-06-22 18:17:42 UTC
Hmm. Nothing obvious. Neither  in /var/log/{messages,warn} nor in /var/log/Xorg.0.log.old.
Comment 11 Stefan Dirsch 2010-06-25 15:53:44 UTC
I believe it would be worth a try to update to latest Mesa, libdrm and 
xorg-x11-driver-video packages from obs://X11:XOrg.
Comment 12 Atri Bhattacharya 2010-06-25 23:52:14 UTC
(In reply to comment #11)
> I believe it would be worth a try to update to latest Mesa, libdrm and 
> xorg-x11-driver-video packages from obs://X11:XOrg.

I can only guess the problem is fixed, since I cannot reproduce it anymore with latest factory + xorg stack upgrade from X11:XOrg.

Upgrades from X11:Xorg have also generally improved performance esp under compiz, and totally solved bug 602727.

Thanks Stefan for the update, and I hope it will make it 11.3.
Comment 13 Stefan Dirsch 2010-06-26 02:14:12 UTC
Thanks a lot for the feedback.
Comment 14 Atri Bhattacharya 2010-07-04 11:04:19 UTC
Created attachment 373710 [details]
YaST2 logs (save_y2logs)

Hi!
Just encountered the bug again with updated Xorg packages as well, running RC1.

I have attached all files asked for immediately after hard restart and rebooting into runlevel 5.

I have to reopen this as a result.
Comment 15 Atri Bhattacharya 2010-07-04 11:05:59 UTC
Created attachment 373711 [details]
/var/log/messages
Comment 16 Atri Bhattacharya 2010-07-04 11:07:13 UTC
Created attachment 373712 [details]
/var/log/warn
Comment 17 Atri Bhattacharya 2010-07-04 11:09:47 UTC
Created attachment 373713 [details]
Xorg.0.log and Xorg.0.log.old
Comment 18 Atri Bhattacharya 2010-07-04 11:11:36 UTC
Oops, changed the assignee by mistake.
Also this happened while I was using KDE and not Gnome.
Comment 19 Atri Bhattacharya 2010-07-04 11:15:42 UTC
In response to other questions:-
- I cannot login to machine remotely after the freeze
- Alt+SysRq+B is configured to work [works every time normally], but does not work when the freeze has taken over.
Comment 20 Stefan Dirsch 2010-07-05 03:27:03 UTC
Nothing obvious I could find in the logfiles. BTW, it doesn't make any sense to tar/gzip single files. It just makes things complicated for us looking into that
logfiles. Attaching single logfiles (uncompressed) and marking them as text/plain
is preferred.
Comment 21 Stefan Dirsch 2010-07-05 03:28:45 UTC
Also please do only attach the part of the file when the freeze happened. There are time stamps in /var/log/messages and /var/log/warn.
Comment 22 Kirill Gagarski 2010-07-10 05:36:55 UTC
same problem on intel 965gm
Comment 23 Stanislav Brabec 2010-07-16 09:06:10 UTC
Guessing that my problem is the same on a freshly installed 11.3.

Intel MicroATX board DG45FC with an integrated G45+X4500HD.

There i no unique way to reproduce, but matrixgl screensaver or flash fullscreen video are the best triggers.

Serial console reports:

[  463.799760] IP: [<ffffffffa01902f3>] intel_finish_page_flip+0x83/0x1d0 [i915]
[  463.799760] PGD 128be2067 PUD 128be1067 PMD 0 
[  463.799760] Oops: 0000 [#1] PREEMPT SMP 
[  463.799760] last sysfs file: /sys/devices/system/cpu/cpu1/cache/index2/shared_cpu_map
[  463.799760] CPU 0 
[  463.799760] Modules linked in: rfcomm sco bridge stp llc bnep l2cap snd_pcm_oss snd_mixer_oss snd_seq snd_seq_device edd af_packet cpufreq_conservative cpufreq_userspace cpufreq_powersave acpi_cpufreq mperf fuse loop dm_mod tda18271 a
f9013 snd_hda_codec_intelhdmi snd_hda_codec_idt snd_hda_intel sr_mod snd_hda_codec snd_hwdep snd_pcm snd_timer btusb cdrom sg lirc_atiusb lirc_dev snd dvb_usb_af9015 dvb_usb usblp dvb_core joydev usb_storage bluetooth soundcore pcspkr sn
d_page_alloc i2c_i801 iTCO_wdt iTCO_vendor_support rfkill ati_remote serio_raw e1000e ext4 jbd2 crc16 i915 drm_kms_helper intel_agp sd_mod drm i2c_algo_bit button video fan processor ata_generic ata_piix ahci libata scsi_mod thermal ther
mal_sys [last unloaded: preloadtrace]
[  463.799760] 
[  463.799760] Pid: 3972, comm: Xorg Not tainted 2.6.34-12-desktop #1 DG45FC/        
[  463.799760] RIP: 0010:[<ffffffffa01902f3>]  [<ffffffffa01902f3>] intel_finish_page_flip+0x83/0x1d0 [i915]
[  463.799760] RSP: 0018:ffff880001e03df8  EFLAGS: 00010046
[  463.799760] RAX: 0000000000000000 RBX: ffff880128e23310 RCX: ffffffffa01a9d18
[  463.799760] RDX: ffffffffa01a4090 RSI: ffffffffa01ac122 RDI: 0000000000000002
[  463.799760] RBP: 0000000000000086 R08: 0000000000000000 R09: 0000000000000000
[  463.799760] R10: 0000000000000082 R11: 0000000000003246 R12: ffff88011e52a140
[  463.799760] R13: ffff880127b48000 R14: ffff880128ee8000 R15: ffff880128e23000
[  463.799760] FS:  00007f3d52460840(0000) GS:ffff880001e00000(0000) knlGS:0000000000000000
[  463.799760] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[  463.799760] CR2: 0000000000000080 CR3: 000000012789c000 CR4: 00000000000406f0
[  463.799760] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[  463.799760] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[  463.799760] Process Xorg (pid: 3972, threadinfo ffff88012a712000, task ffff880126576100)
[  463.799760] Stack:
[  463.799760]  ffff880128e23310 ffff880128e23000 000000004c4016aa 000000000005d482
[  463.799760] <0> 0000000000040306 ffff880127b48000 0000000000000040 ffff880128e23000
[  463.799760] <0> 0000000000000000 0000000000040306 0000000000000000 ffffffffa0176c7c
[  463.799760] Call Trace:
[  463.799760]  [<ffffffffa0176c7c>] i915_driver_irq_handler+0x25c/0x450 [i915]
[  463.799760]  [<ffffffff810abd38>] handle_IRQ_event+0x68/0x1c0
[  463.799760]  [<ffffffff810ae6be>] handle_edge_irq+0xbe/0x170
[  463.799760]  [<ffffffff81005ba5>] handle_irq+0x15/0x20
[  463.799760]  [<ffffffff81005812>] do_IRQ+0x62/0xe0
[  463.799760]  [<ffffffff814a1d93>] ret_from_intr+0x0/0xa
[  463.799760]  [<ffffffff8111b9e9>] kmem_cache_alloc_notrace+0x89/0x170
[  463.799760]  [<ffffffffa017d58b>] i915_add_request+0x3b/0x590 [i915]

Notes:

- It is a semi-regression. In 11.2 it frozen as well, but it did not crash the whole system. Just the graphics was stuck, even mouse pointer worked.

-  I cannot say it for sure, but it seems to me that Google Earth or Flash full screen video performs little worse than 11.2. (I still have 11.2 and I can run some tests there.)
Comment 24 Victor Grischenko 2010-07-19 07:09:51 UTC
I upgraded from OpenSUSE 11.2 and got this issue on KDE4. My box is HP530 laptop with integrated Intel 945 graphics. 

X freezes almost every time the "Solar wind" screensaver is running.

I'm not at home now but I can send logfiles later.
Comment 25 Victor Grischenko 2010-07-19 20:03:24 UTC
Created attachment 376946 [details]
Xorg.0.log.old
Comment 26 Victor Grischenko 2010-07-19 20:06:07 UTC
Created attachment 376950 [details]
/var/log/messages
Comment 27 Alex Poddubny 2010-07-22 17:46:52 UTC
The same here, HP530 freezes with OpenGL settings which works perfectly in 11.2. Any OpenGL screensaver crashes X11, visual effects freezes machine at all. Updating Mesa, drm and driver from X11 repository don't fix it
Comment 28 Stanislav Brabec 2010-07-22 19:37:22 UTC
To comment 27:

With my G45. I experienced X freezes in 11.2 as well.

In 11.3, I experienced only total system freezes (comment 23). Today I experienced the same freeze as seen in 11.2:

- X crashes while display is suspended or goes to suspend (I never seen the moment of the crash)

- Can login to crashed machine

- Cannot chvt (it does not finish, but I can Ctrl+C)

- Cannot run remotely any program on the local display (it again freezes).

I just made a backtrace of running Xorg. then I tried killall -11 Xorg, and it completely crashed the system and fan started to run quickly (I did not expected oops and I had not serial console active)

Here is the non-crash backtrace during the freeze:

Thread 1 (Thread 0x7fce647ab840 (LWP 3791)):
#0  0x00007fce62c4fe87 in ioctl () at ../sysdeps/unix/syscall-template.S:82
#1  0x00007fce60dab0bd in drm_intel_gem_bo_mrb_exec2 (bo=<value optimized out>, used=32, cliprects=<value optimized out>, num_cliprects=<value optimized out>, DR4=<value optimized out>, ring_flag=<value optimized out>) at intel_bufmgr_gem.c:1608
#2  0x00007fce60fc40cf in intel_batch_submit (scrn=0x8322a0, flush=1) at i830_batchbuffer.c:193
#3  0x00007fce60fc5766 in I830BlockHandler (i=0, blockData=0x0, pTimeout=0x7fffd0fcb108, pReadmask=0x7e89e0) at i830_driver.c:872
#4  0x00000000004d7cac in AnimCurScreenBlockHandler (screenNum=0, blockData=0x0, pTimeout=0x7fffd0fcb108, pReadmask=0x7e89e0) at animcur.c:211
#5  0x00000000004a94e0 in compBlockHandler (i=0, blockData=0x0, pTimeout=0x7fffd0fcb108, pReadmask=<value optimized out>) at compinit.c:160
#6  0x000000000043e540 in BlockHandler (pTimeout=0x7fffd0fcb108, pReadmask=0x7e89e0) at dixutils.c:369
#7  0x000000000045fd71 in WaitForSomething (pClientsReady=0x2735c90) at WaitFor.c:217
#8  0x000000000044c4b2 in Dispatch () at dispatch.c:375
#9  0x0000000000425f3a in main (argc=<value optimized out>, argv=0x7fffd0fcb318, envp=<value optimized out>) at main.c:286
Comment 29 Forgotten User q1-mW4hKuE 2010-07-22 20:07:29 UTC
Running openSuse 11.3 with an Mobile Intel GM45 Chipset and have the same problem here (system freeze completly.

  SYSTEM MAP: System.map-2.6.34-12-desktop                             
DEBUG KERNEL: /usr/src/linux/vmlinux (2.6.34-12-desktop)
    DUMPFILE: vmcore
        CPUS: 2
        DATE: Thu Jul 22 11:08:28 2010
      UPTIME: 01:44:32
LOAD AVERAGE: 0.08, 0.02, 0.07
       TASKS: 390
    NODENAME: sarge.family-business
     RELEASE: 2.6.34-12-desktop
     VERSION: #1 SMP PREEMPT 2010-06-29 02:39:08 +0200
     MACHINE: x86_64  (2094 Mhz)
      MEMORY: 3.8 GB
       PANIC: "[ 6272.960800] Oops: 0000 [#1] PREEMPT SMP " (check log for details)
         PID: 6944
     COMMAND: "Xorg"
        TASK: ffff88013f3fa3c0  [THREAD_INFO: ffff88013c470000]
         CPU: 0
       STATE: TASK_RUNNING (PANIC)

Log file entry is very similar to the one in comment 23. Are there other useful information? I have configured kdump.
Comment 30 Forgotten User CSGA97KGGE 2010-07-23 19:55:17 UTC
Hi,

Have been experiencing the same issue. So far, a fix that should work by using the steps below (outlined on https://bugs.freedesktop.org/show_bug.cgi?id=28788) is available.

My problem so far is how to properly compile the module. Tried to modify the Makefile but it is generating a too big module. Perhaps, someone can fix the Makefile (last source, after patches).

RECIPE
------

Apply 3 patches to i915 gpu driver

- 1st patch:
--------------------------------------------------------------------------------
From a53925d44f1e8b66cd0aed163af656991c414492 Mon Sep 17 00:00:00 2001
From: Jesse Barnes <jbarnes@virtuousgeek.org>
Date: Mon, 5 Apr 2010 14:03:51 -0700
Subject: [PATCH 1/2] drm/i915: don't queue flips during a flip pending event

Hardware will set the flip pending ISR bit as soon as it receives the
flip instruction, and (supposedly) clear it once the flip completes
(e.g. at the next vblank).  If we try to send down a flip instruction
while the ISR bit is set, the hardware can become very confused, and we
may never receive the corresponding flip pending interrupt, effectively
hanging the chip.

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/gpu/drm/i915/intel_display.c |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 88a1ab7..f460761 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -4664,6 +4664,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
 	unsigned long flags;
 	int pipesrc_reg = (intel_crtc->pipe == 0) ? PIPEASRC : PIPEBSRC;
 	int ret, pipesrc;
+	u32 flip_mask;
 
 	work = kzalloc(sizeof *work, GFP_KERNEL);
 	if (work == NULL)
@@ -4717,6 +4718,16 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
 	atomic_inc(&obj_priv->pending_flip);
 	work->pending_flip_obj = obj;
 
+	if (intel_crtc->plane)
+		flip_mask = I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT;
+	else
+		flip_mask = I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT;
+
+	/* Wait for any previous flip to finish */
+	if (IS_GEN3(dev))
+		while (I915_READ(ISR) & flip_mask)
+			;
+
 	BEGIN_LP_RING(4);
 	OUT_RING(MI_DISPLAY_FLIP |
 		 MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
-- 
1.6.6.1
--------------------------------------------------------------------------------

- 2nd patch:
--------------------------------------------------------------------------------
From 5e1e40dda5b675e1432a0f9d2d8943196f7a1130 Mon Sep 17 00:00:00 2001
From: Jesse Barnes <jbarnes@virtuousgeek.org>
Date: Fri, 26 Mar 2010 10:35:20 -0700
Subject: [PATCH 2/2] drm/i915: gen3 page flipping fixes

Gen3 chips have slightly different flip commands, and also contain a bit
that indicates whether a "flip pending" interrupt means the flip has
been queued or has been completed.

So implement support for the gen3 flip command, and make sure we use the
flip pending interrupt correctly depending on the value of ECOSKPD bit
0.

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/gpu/drm/i915/i915_dma.c      |    4 ++++
 drivers/gpu/drm/i915/i915_drv.h      |    1 +
 drivers/gpu/drm/i915/i915_irq.c      |   16 ++++++++++++----
 drivers/gpu/drm/i915/i915_reg.h      |    4 ++++
 drivers/gpu/drm/i915/intel_display.c |   29 ++++++++++++++++++++++++-----
 drivers/gpu/drm/i915/intel_drv.h     |    1 +
 6 files changed, 46 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index 84ce956..4d59710 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -1408,6 +1408,10 @@ static int i915_load_modeset_init(struct drm_device *dev,
 	if (ret)
 		goto destroy_ringbuffer;
 
+	/* IIR "flip pending" bit means done if this bit is set */
+	if (IS_GEN3(dev) && (I915_READ(ECOSKPD) & ECO_FLIP_DONE))
+		dev_priv->flip_pending_is_done = true;
+
 	intel_modeset_init(dev);
 
 	ret = drm_irq_install(dev);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 9ed8ecd..fd62d1e 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -595,6 +595,7 @@ typedef struct drm_i915_private {
 	struct drm_crtc *plane_to_crtc_mapping[2];
 	struct drm_crtc *pipe_to_crtc_mapping[2];
 	wait_queue_head_t pending_flip_queue;
+	bool flip_pending_is_done;
 
 	/* Reclocking support */
 	bool render_reclock_avail;
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 2479be0..a846cd8 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -940,22 +940,30 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
 		if (HAS_BSD(dev) && (iir & I915_BSD_USER_INTERRUPT))
 			DRM_WAKEUP(&dev_priv->bsd_ring.irq_queue);
 
-		if (iir & I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT)
+		if (iir & I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT) {
 			intel_prepare_page_flip(dev, 0);
+			if (dev_priv->flip_pending_is_done)
+				intel_finish_page_flip_plane(dev, 0);
+		}
 
-		if (iir & I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT)
+		if (iir & I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT) {
 			intel_prepare_page_flip(dev, 1);
+			if (dev_priv->flip_pending_is_done)
+				intel_finish_page_flip_plane(dev, 1);
+		}
 
 		if (pipea_stats & vblank_status) {
 			vblank++;
 			drm_handle_vblank(dev, 0);
-			intel_finish_page_flip(dev, 0);
+			if (!dev_priv->flip_pending_is_done)
+				intel_finish_page_flip(dev, 0);
 		}
 
 		if (pipeb_stats & vblank_status) {
 			vblank++;
 			drm_handle_vblank(dev, 1);
-			intel_finish_page_flip(dev, 1);
+			if (!dev_priv->flip_pending_is_done)
+				intel_finish_page_flip(dev, 1);
 		}
 
 		if ((pipea_stats & I915_LEGACY_BLC_EVENT_STATUS) ||
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 64b0a3a..2cae38a 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -178,6 +178,7 @@
 #define   MI_OVERLAY_OFF	(0x2<<21)
 #define MI_LOAD_SCAN_LINES_INCL MI_INSTR(0x12, 0)
 #define MI_DISPLAY_FLIP		MI_INSTR(0x14, 2)
+#define MI_DISPLAY_FLIP_I915	MI_INSTR(0x14, 1)
 #define   MI_DISPLAY_FLIP_PLANE(n) ((n) << 20)
 #define MI_STORE_DWORD_IMM	MI_INSTR(0x20, 1)
 #define   MI_MEM_VIRTUAL	(1 << 22) /* 965+ only */
@@ -368,6 +369,9 @@
 #define   CM0_RC_OP_FLUSH_DISABLE (1<<0)
 #define BB_ADDR		0x02140 /* 8 bytes */
 #define GFX_FLSH_CNTL	0x02170 /* 915+ only */
+#define ECOSKPD		0x021d0
+#define   ECO_GATING_CX_ONLY	(1<<3)
+#define   ECO_FLIP_DONE		(1<<0)
 
 /* GEN6 interrupt control */
 #define GEN6_RENDER_HWSTAM	0x2098
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index f460761..ac23b29 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -4587,10 +4587,10 @@ static void intel_unpin_work_fn(struct work_struct *__work)
 	kfree(work);
 }
 
-void intel_finish_page_flip(struct drm_device *dev, int pipe)
+static void do_intel_finish_page_flip(struct drm_device *dev,
+				      struct drm_crtc *crtc)
 {
 	drm_i915_private_t *dev_priv = dev->dev_private;
-	struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe];
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_unpin_work *work;
 	struct drm_i915_gem_object *obj_priv;
@@ -4634,6 +4634,22 @@ void intel_finish_page_flip(struct drm_device *dev, int pipe)
 	schedule_work(&work->work);
 }
 
+void intel_finish_page_flip(struct drm_device *dev, int pipe)
+{
+	drm_i915_private_t *dev_priv = dev->dev_private;
+	struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe];
+
+	do_intel_finish_page_flip(dev, crtc);
+}
+
+void intel_finish_page_flip_plane(struct drm_device *dev, int plane)
+{
+	drm_i915_private_t *dev_priv = dev->dev_private;
+	struct drm_crtc *crtc = dev_priv->plane_to_crtc_mapping[plane];
+
+	do_intel_finish_page_flip(dev, crtc);
+}
+
 void intel_prepare_page_flip(struct drm_device *dev, int plane)
 {
 	drm_i915_private_t *dev_priv = dev->dev_private;
@@ -4729,14 +4745,17 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
 			;
 
 	BEGIN_LP_RING(4);
-	OUT_RING(MI_DISPLAY_FLIP |
-		 MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
-	OUT_RING(fb->pitch);
 	if (IS_I965G(dev)) {
+		OUT_RING(MI_DISPLAY_FLIP |
+			 MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
+		OUT_RING(fb->pitch);
 		OUT_RING(obj_priv->gtt_offset | obj_priv->tiling_mode);
 		pipesrc = I915_READ(pipesrc_reg); 
 		OUT_RING(pipesrc & 0x0fff0fff);
 	} else {
+		OUT_RING(MI_DISPLAY_FLIP_I915 |
+			 MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
+		OUT_RING(fb->pitch);
 		OUT_RING(obj_priv->gtt_offset);
 		OUT_RING(MI_NOOP);
 	}
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index df931f7..72206f3 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -224,6 +224,7 @@ extern void intel_fbdev_fini(struct drm_device *dev);
 
 extern void intel_prepare_page_flip(struct drm_device *dev, int plane);
 extern void intel_finish_page_flip(struct drm_device *dev, int pipe);
+extern void intel_finish_page_flip_plane(struct drm_device *dev, int plane);
 
 extern void intel_setup_overlay(struct drm_device *dev);
 extern void intel_cleanup_overlay(struct drm_device *dev);
-- 
1.6.6.1
--------------------------------------------------------------------------------

- 3rd patch: (from kernel.org v. 2.6.34.1)
--------------------------------------------------------------------------------
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index c7502b6..70765cf 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -4155,12 +4155,6 @@ void intel_finish_page_flip(struct drm_device *dev, int pipe)
 	spin_lock_irqsave(&dev->event_lock, flags);
 	work = intel_crtc->unpin_work;
 	if (work == NULL || !work->pending) {
-		if (work && !work->pending) {
-			obj_priv = to_intel_bo(work->pending_flip_obj);
-			DRM_DEBUG_DRIVER("flip finish: %p (%d) not pending?\n",
-					 obj_priv,
-					 atomic_read(&obj_priv->pending_flip));
-		}
 		spin_unlock_irqrestore(&dev->event_lock, flags);
 		return;
 	}
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 77e40cf..7c28ff1 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1180,16 +1180,6 @@ intel_dp_detect(struct drm_connector *connector)
 	if (HAS_PCH_SPLIT(dev))
 		return ironlake_dp_detect(connector);
 
-	temp = I915_READ(PORT_HOTPLUG_EN);
-
-	I915_WRITE(PORT_HOTPLUG_EN,
-	       temp |
-	       DPB_HOTPLUG_INT_EN |
-	       DPC_HOTPLUG_INT_EN |
-	       DPD_HOTPLUG_INT_EN);
-
-	POSTING_READ(PORT_HOTPLUG_EN);
-
 	switch (dp_priv->output_reg) {
 	case DP_B:
 		bit = DPB_HOTPLUG_INT_STATUS;
--------------------------------------------------------------------------------

- Makefile (generating a too big module)
--------------------------------------------------------------------------------
#
# Makefile for the drm device driver.  This driver provides support for the
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.

TAG := default

KDIR := /lib/modules/$(shell uname -r)/build
SDIR := /usr/src/$(shell uname -r | sed -e 's/\(.*\)-[[:alnum:]]\+/\1-obj/')/0$(shell uname -m)/$(TAG)
PWD := $(shell pwd)

i915-m := i915.o
 
ccflags-y := -I$(SDIR)/include/config/drm
i915-m += i915_drv.o i915_dma.o i915_irq.o i915_mem.o \
	  i915_debugfs.o \
          i915_suspend.o \
	  i915_gem.o \
	  i915_gem_debug.o \
	  i915_gem_tiling.o \
	  i915_trace_points.o \
	  intel_display.o \
	  intel_crt.o \
	  intel_lvds.o \
	  intel_bios.o \
	  intel_dp.o \
	  intel_hdmi.o \
	  intel_sdvo.o \
	  intel_modes.o \
	  intel_i2c.o \
	  intel_fb.o \
	  intel_tv.o \
	  intel_dvo.o \
	  intel_overlay.o \
	  dvo_ch7xxx.o \
	  dvo_ch7017.o \
	  dvo_ivch.o \
	  dvo_tfp410.o \
	  dvo_sil164.o

i915-$(CONFIG_ACPI)	+= i915_opregion.o
i915-$(CONFIG_COMPAT)   += i915_ioc32.o

all:
	$(MAKE) -C $(KDIR) M=$(PWD) modules

clean:
	$(MAKE) -C $(KDIR) M=$(PWD) clean
--------------------------------------------------------------------------------

Best regards,
Andre
Comment 31 Forgotten User q1-mW4hKuE 2010-07-23 20:49:28 UTC
I can't even patch the kernel source (combined the 3 patches into one file):

patch -p 1 --dry-run < i915_patch 
patching file drivers/gpu/drm/i915/intel_display.c
Hunk #1 FAILED at 4664.
Hunk #2 FAILED at 4717.
2 out of 2 hunks FAILED -- saving rejects to file drivers/gpu/drm/i915/intel_display.c.rej
patching file drivers/gpu/drm/i915/i915_dma.c
Hunk #1 FAILED at 1408.
1 out of 1 hunk FAILED -- saving rejects to file drivers/gpu/drm/i915/i915_dma.c.rej
patching file drivers/gpu/drm/i915/i915_drv.h
Hunk #1 FAILED at 595.
1 out of 1 hunk FAILED -- saving rejects to file drivers/gpu/drm/i915/i915_drv.h.rej
patching file drivers/gpu/drm/i915/i915_irq.c
Hunk #1 FAILED at 940.
1 out of 1 hunk FAILED -- saving rejects to file drivers/gpu/drm/i915/i915_irq.c.rej
patching file drivers/gpu/drm/i915/i915_reg.h
Hunk #1 FAILED at 178.
Hunk #2 FAILED at 368.
2 out of 2 hunks FAILED -- saving rejects to file drivers/gpu/drm/i915/i915_reg.h.rej
patching file drivers/gpu/drm/i915/intel_display.c
Hunk #1 FAILED at 4587.
Hunk #2 succeeded at 4190 with fuzz 1 (offset -444 lines).
Hunk #3 FAILED at 4745.
2 out of 3 hunks FAILED -- saving rejects to file drivers/gpu/drm/i915/intel_display.c.rej
patching file drivers/gpu/drm/i915/intel_drv.h
Hunk #1 succeeded at 219 (offset -5 lines).
patching file drivers/gpu/drm/i915/intel_display.c
Hunk #1 FAILED at 4155.
1 out of 1 hunk FAILED -- saving rejects to file drivers/gpu/drm/i915/intel_display.c.rej
patching file drivers/gpu/drm/i915/intel_dp.c
Hunk #1 FAILED at 1180.
1 out of 1 hunk FAILED -- saving rejects to file drivers/gpu/drm/i915/intel_dp.c.rej
Comment 32 Stanislav Brabec 2010-07-23 20:52:54 UTC
Thanks for patches. Mayber kernel upgrade will be needed.

Here is just another backtrace of a hang (just stuck X, system alive) which happened after accidental opening of 148 mplayer windows:

[  6782.153] [mi] EQ overflowing. The server is probably stuck in an infinite loop.
[  6782.153] 
Backtrace:
[  6782.153] 0: /usr/bin/Xorg (xorg_backtrace+0x28) [0x4a34c8]
[  6782.153] 1: /usr/bin/Xorg (mieqEnqueue+0x1f4) [0x49c124]
[  6782.153] 2: /usr/bin/Xorg (xf86PostMotionEventP+0xc4) [0x471bb4]
[  6782.153] 3: /usr/lib64/xorg/modules/input/evdev_drv.so (0x7f61cab88000+0x43f5) [0x7f61cab8c3f5]
[  6782.153] 4: /usr/bin/Xorg (0x400000+0x790a7) [0x4790a7]
[  6782.153] 5: /usr/bin/Xorg (0x400000+0x10ed53) [0x50ed53]
[  6782.153] 6: /lib64/libc.so.6 (0x7f61cdcf6000+0x32a60) [0x7f61cdd28a60]
[  6782.153] 7: /lib64/libc.so.6 (__read+0x10) [0x7f61cddb93e0]
[  6782.154] 8: /usr/bin/Xorg (0x400000+0x13d4ef) [0x53d4ef]
[  6782.154] 9: /usr/bin/Xorg (xf86HandlePMEvents+0x35) [0x51c085]
[  6782.154] 10: /usr/bin/Xorg (xf86Wakeup+0x13a) [0x4797fa]
[  6782.154] 11: /usr/bin/Xorg (WakeupHandler+0x4b) [0x43e67b]
[  6782.154] 12: /usr/bin/Xorg (WaitForSomething+0x1ca) [0x45fe0a]
[  6782.154] 13: /usr/bin/Xorg (0x400000+0x4c4b2) [0x44c4b2]
[  6782.154] 14: /usr/bin/Xorg (0x400000+0x25f3a) [0x425f3a]
[  6782.154] 15: /lib64/libc.so.6 (__libc_start_main+0xfd) [0x7f61cdd14b7d]
[  6782.154] 16: /usr/bin/Xorg (0x400000+0x25af9) [0x425af9]
Comment 33 Stefan Dirsch 2010-07-23 21:00:09 UTC
(In reply to comment #32)
> Thanks for patches. Mayber kernel upgrade will be needed.
> 
> Here is just another backtrace of a hang (just stuck X, system alive) which
> happened after accidental opening of 148 mplayer windows:
> 
> [  6782.153] [mi] EQ overflowing. The server is probably stuck in an infinite
> loop.

Well, that sounds more like Bug #597078.
Comment 34 Forgotten User CSGA97KGGE 2010-07-23 22:33:11 UTC
OK, will post the patches against the openSUSE source, combined in a big one. Still, even after correcting the Makefile and compile, there is a big difference on the module sizes. Would like some help on it.

Will post the patch very soon (downloading the original src.rpm to be able to do that).
Comment 35 Forgotten User CSGA97KGGE 2010-07-23 23:17:14 UTC
OK, the patch against openSUSE original src.rpm (version is 2.6.34-14.2).

--------------------------------------------------------------------------------
--- linux-2.6.34/drivers/gpu/drm/i915/intel_drv.h	2010-05-16 18:17:36.000000000 -0300
+++ linux-2.6.34-14.2/drivers/gpu/drm/i915/intel_drv.h	2010-07-23 15:48:34.864245286 -0300
@@ -219,6 +219,7 @@
 
 extern void intel_prepare_page_flip(struct drm_device *dev, int plane);
 extern void intel_finish_page_flip(struct drm_device *dev, int pipe);
+extern void intel_finish_page_flip_plane(struct drm_device *dev, int plane);
 
 extern void intel_setup_overlay(struct drm_device *dev);
 extern void intel_cleanup_overlay(struct drm_device *dev);
--- linux-2.6.34/drivers/gpu/drm/i915/intel_dp.c	2010-05-16 18:17:36.000000000 -0300
+++ linux-2.6.34-14.2/drivers/gpu/drm/i915/intel_dp.c	2010-07-23 15:18:05.354242182 -0300
@@ -1180,16 +1180,6 @@
 	if (HAS_PCH_SPLIT(dev))
 		return ironlake_dp_detect(connector);
 
-	temp = I915_READ(PORT_HOTPLUG_EN);
-
-	I915_WRITE(PORT_HOTPLUG_EN,
-	       temp |
-	       DPB_HOTPLUG_INT_EN |
-	       DPC_HOTPLUG_INT_EN |
-	       DPD_HOTPLUG_INT_EN);
-
-	POSTING_READ(PORT_HOTPLUG_EN);
-
 	switch (dp_priv->output_reg) {
 	case DP_B:
 		bit = DPB_HOTPLUG_INT_STATUS;
--- linux-2.6.34/drivers/gpu/drm/i915/i915_drv.c	2010-05-16 18:17:36.000000000 -0300
+++ linux-2.6.34-14.2/drivers/gpu/drm/i915/i915_drv.c	2010-07-20 21:33:16.000000000 -0300
@@ -533,7 +533,7 @@
 		 .open = drm_open,
 		 .release = drm_release,
 		 .unlocked_ioctl = drm_ioctl,
-		 .mmap = drm_gem_mmap,
+		 .mmap = i915_gem_mmap,
 		 .poll = drm_poll,
 		 .fasync = drm_fasync,
 		 .read = drm_read,
--- linux-2.6.34/drivers/gpu/drm/i915/i915_irq.c	2010-05-16 18:17:36.000000000 -0300
+++ linux-2.6.34-14.2/drivers/gpu/drm/i915/i915_irq.c	2010-07-23 14:47:43.883992471 -0300
@@ -932,22 +932,30 @@
 			mod_timer(&dev_priv->hangcheck_timer, jiffies + DRM_I915_HANGCHECK_PERIOD);
 		}
 
-		if (iir & I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT)
+		if (iir & I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT) {
 			intel_prepare_page_flip(dev, 0);
+			if (dev_priv->flip_pending_is_done)
+				intel_finish_page_flip_plane(dev, 0);
+		}
 
-		if (iir & I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT)
+		if (iir & I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT) {
 			intel_prepare_page_flip(dev, 1);
+			if (dev_priv->flip_pending_is_done)
+				intel_finish_page_flip_plane(dev, 1);
+		}
 
 		if (pipea_stats & vblank_status) {
 			vblank++;
 			drm_handle_vblank(dev, 0);
-			intel_finish_page_flip(dev, 0);
+			if (!dev_priv->flip_pending_is_done)
+				intel_finish_page_flip(dev, 0);
 		}
 
 		if (pipeb_stats & vblank_status) {
 			vblank++;
 			drm_handle_vblank(dev, 1);
-			intel_finish_page_flip(dev, 1);
+			if (!dev_priv->flip_pending_is_done)
+				intel_finish_page_flip(dev, 1);
 		}
 
 		if ((pipeb_stats & I915_LEGACY_BLC_EVENT_STATUS) ||
--- linux-2.6.34/drivers/gpu/drm/i915/i915_dma.c	2010-05-16 18:17:36.000000000 -0300
+++ linux-2.6.34-14.2/drivers/gpu/drm/i915/i915_dma.c	2010-07-23 15:34:02.408243093 -0300
@@ -1488,6 +1488,10 @@
 	if (ret)
 		goto destroy_ringbuffer;
 
+	/* IIR "flip pending" bit means done if this bit is set */
+	if (IS_GEN3(dev) && (I915_READ(ECOSKPD) & ECO_FLIP_DONE))
+		dev_priv->flip_pending_is_done = true;
+
 	intel_modeset_init(dev);
 
 	ret = drm_irq_install(dev);
--- linux-2.6.34/drivers/gpu/drm/i915/i915_gem.c	2010-05-16 18:17:36.000000000 -0300
+++ linux-2.6.34-14.2/drivers/gpu/drm/i915/i915_gem.c	2010-07-20 21:33:16.000000000 -0300
@@ -1146,6 +1146,17 @@
 	return 0;
 }
 
+#ifdef CONFIG_XEN
+int i915_gem_mmap(struct file *filp, struct vm_area_struct *vma)
+{
+	int ret = drm_gem_mmap(filp, vma);
+
+	pgprot_val(vma->vm_page_prot) |= _PAGE_IOMAP;
+
+	return ret;
+}
+#endif
+
 /**
  * i915_gem_fault - fault a page into the GTT
  * vma: VMA in question
--- linux-2.6.34/drivers/gpu/drm/i915/i915_drv.h	2010-05-16 18:17:36.000000000 -0300
+++ linux-2.6.34-14.2/drivers/gpu/drm/i915/i915_drv.h	2010-07-23 15:25:38.944242968 -0300
@@ -611,6 +611,7 @@
 	struct drm_crtc *plane_to_crtc_mapping[2];
 	struct drm_crtc *pipe_to_crtc_mapping[2];
 	wait_queue_head_t pending_flip_queue;
+	bool flip_pending_is_done;
 
 	/* Reclocking support */
 	bool render_reclock_avail;
@@ -926,6 +927,11 @@
 uint32_t i915_add_request(struct drm_device *dev, struct drm_file *file_priv,
 			  uint32_t flush_domains);
 int i915_do_wait_request(struct drm_device *dev, uint32_t seqno, int interruptible);
+#ifdef CONFIG_XEN
+int i915_gem_mmap(struct file *filp, struct vm_area_struct *vma);
+#else
+#define i915_gem_mmap drm_gem_mmap
+#endif
 int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf);
 int i915_gem_object_set_to_gtt_domain(struct drm_gem_object *obj,
 				      int write);
--- linux-2.6.34/drivers/gpu/drm/i915/intel_display.c	2010-05-16 18:17:36.000000000 -0300
+++ linux-2.6.34-14.2/drivers/gpu/drm/i915/intel_display.c	2010-07-23 17:33:54.807242186 -0300
@@ -4137,10 +4137,10 @@
 	kfree(work);
 }
 
-void intel_finish_page_flip(struct drm_device *dev, int pipe)
+static void do_intel_finish_page_flip(struct drm_device *dev,
+				      struct drm_crtc *crtc)
 {
 	drm_i915_private_t *dev_priv = dev->dev_private;
-	struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe];
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_unpin_work *work;
 	struct drm_i915_gem_object *obj_priv;
@@ -4155,12 +4155,6 @@
 	spin_lock_irqsave(&dev->event_lock, flags);
 	work = intel_crtc->unpin_work;
 	if (work == NULL || !work->pending) {
-		if (work && !work->pending) {
-			obj_priv = to_intel_bo(work->pending_flip_obj);
-			DRM_DEBUG_DRIVER("flip finish: %p (%d) not pending?\n",
-					 obj_priv,
-					 atomic_read(&obj_priv->pending_flip));
-		}
 		spin_unlock_irqrestore(&dev->event_lock, flags);
 		return;
 	}
@@ -4190,6 +4184,22 @@
 	schedule_work(&work->work);
 }
 
+void intel_finish_page_flip(struct drm_device *dev, int pipe)
+{
+	drm_i915_private_t *dev_priv = dev->dev_private;
+	struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe];
+
+	do_intel_finish_page_flip(dev, crtc);
+}
+
+void intel_finish_page_flip_plane(struct drm_device *dev, int plane)
+{
+	drm_i915_private_t *dev_priv = dev->dev_private;
+	struct drm_crtc *crtc = dev_priv->plane_to_crtc_mapping[plane];
+
+	do_intel_finish_page_flip(dev, crtc);
+}
+
 void intel_prepare_page_flip(struct drm_device *dev, int plane)
 {
 	drm_i915_private_t *dev_priv = dev->dev_private;
@@ -4220,6 +4230,7 @@
 	unsigned long flags;
 	int pipesrc_reg = (intel_crtc->pipe == 0) ? PIPEASRC : PIPEBSRC;
 	int ret, pipesrc;
+	u32 flip_mask;
 	RING_LOCALS;
 
 	work = kzalloc(sizeof *work, GFP_KERNEL);
@@ -4270,15 +4281,28 @@
 	atomic_inc(&obj_priv->pending_flip);
 	work->pending_flip_obj = obj;
 
+	if (intel_crtc->plane)
+		flip_mask = I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT;
+	else
+		flip_mask = I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT;
+
+	/* Wait for any previous flip to finish */
+	if (IS_GEN3(dev))
+		while (I915_READ(ISR) & flip_mask)
+			;
+
 	BEGIN_LP_RING(4);
-	OUT_RING(MI_DISPLAY_FLIP |
-		 MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
-	OUT_RING(fb->pitch);
 	if (IS_I965G(dev)) {
+		OUT_RING(MI_DISPLAY_FLIP |
+			 MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
+		OUT_RING(fb->pitch);
 		OUT_RING(obj_priv->gtt_offset | obj_priv->tiling_mode);
 		pipesrc = I915_READ(pipesrc_reg); 
 		OUT_RING(pipesrc & 0x0fff0fff);
 	} else {
+		OUT_RING(MI_DISPLAY_FLIP_I915 |
+			 MI_DISPLAY_FLIP_PLANE(intel_crtc->plane));
+		OUT_RING(fb->pitch);
 		OUT_RING(obj_priv->gtt_offset);
 		OUT_RING(MI_NOOP);
 	}
--- linux-2.6.34/drivers/gpu/drm/i915/i915_reg.h	2010-05-16 18:17:36.000000000 -0300
+++ linux-2.6.34-14.2/drivers/gpu/drm/i915/i915_reg.h	2010-07-23 17:26:52.544242460 -0300
@@ -178,6 +178,7 @@
 #define   MI_OVERLAY_OFF	(0x2<<21)
 #define MI_LOAD_SCAN_LINES_INCL MI_INSTR(0x12, 0)
 #define MI_DISPLAY_FLIP		MI_INSTR(0x14, 2)
+#define MI_DISPLAY_FLIP_I915	MI_INSTR(0x14, 1)
 #define   MI_DISPLAY_FLIP_PLANE(n) ((n) << 20)
 #define MI_STORE_DWORD_IMM	MI_INSTR(0x20, 1)
 #define   MI_MEM_VIRTUAL	(1 << 22) /* 965+ only */
@@ -368,6 +369,9 @@
 #define BB_ADDR		0x02140 /* 8 bytes */
 #define GFX_FLSH_CNTL	0x02170 /* 915+ only */
 
+#define ECOSKPD		0x021d0
+#define   ECO_GATING_CX_ONLY	(1<<3)
+#define   ECO_FLIP_DONE		(1<<0)
 
 /*
  * Framebuffer compression (915+ only)
--------------------------------------------------------------------------------

Still, want help with the Makefile.

Also, as a side note, would like to know if the openSUSE development system has a kind of structure like of Fedora source (http://cvs.fedoraproject.org/viewvc/rpms/) or like Debian (http://patch-tracker.debian.org/) patch system, from where we could grab just the patches. Sucks to download the whole package to be able to discover what patches are included. It may make contribution to openSUSE development a bit harder.

Regards,
Andre
Comment 36 David Mills 2010-07-26 02:09:53 UTC
Hi, I too am experiencing this issue.  I have gone back to 11.2.  Can you please let us know when an "Online update" patch has been released to fix this issue and I will then try 11.3 again.

I am running a Dell Studio XPS box with i7 950 core processor and 8GB RAM with an ATI HD4550 graphics card.

Thanks, David.
Comment 37 Stefan Dirsch 2010-07-26 02:29:42 UTC
Not sure why Andre thinks that the patches he "attached" are going to fix that issue. Also I don't understand the issues with the module size and Makefile adjustments. I mean why adjust the Makefile at all?

Basically what you need is adding your patches to the "patches.drivers.tar.bz2" tarball, then also add the patches to "series.conf" file. Then rebuild the RPM.
Comment 38 Forgotten User CSGA97KGGE 2010-07-26 12:59:47 UTC
(In reply to comment #37)
> Not sure why Andre thinks that the patches he "attached" are going to fix that
> issue. Also I don't understand the issues with the module size and Makefile
> adjustments. I mean why adjust the Makefile at all?
> 
> Basically what you need is adding your patches to the "patches.drivers.tar.bz2"
> tarball, then also add the patches to "series.conf" file. Then rebuild the RPM.

See the links.

The "freeze" is an issue that happens with i915 on linux 2.6.34. The code fo fix it is present on the freedesktop.org and on the new, still not release on final form, kernel 2.6.35 (rc6 now). You can check there.

The size difference I am asking help to fix, is because I would like to rebuild just the driver, not the whole kernel, so, I modified the Makefile to achive this goal.

The difference on size is the following (both are stripped):
- original i915.ko - 538K
- generated i915.ko - 9134K

As you can see, a lot of code is being dumped inside of it for no reason I can see.

The Makefile I used is:
-------------------------------------------------------------------------------
#
# Makefile for the drm device driver.  This driver provides support for the
# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.

TAG := default

KDIR := /lib/modules/$(shell uname -r)/build
SDIR := /usr/src/$(shell uname -r | sed -e 's/\(.*\)-[[:alnum:]]\+/\1-obj/')/0$(shell uname -m)/$(TAG)
PWD := $(shell pwd)

# i915-m := i915.o
 
ccflags-y := -I$(SDIR)/include/config/drm
i915-y += i915_drv.o i915_dma.o i915_irq.o i915_mem.o \
	  i915_debugfs.o \
          i915_suspend.o \
	  i915_gem.o \
	  i915_gem_debug.o \
	  i915_gem_tiling.o \
	  i915_trace_points.o \
	  intel_display.o \
	  intel_crt.o \
	  intel_lvds.o \
	  intel_bios.o \
	  intel_dp.o \
	  intel_hdmi.o \
	  intel_sdvo.o \
	  intel_modes.o \
	  intel_i2c.o \
	  intel_fb.o \
	  intel_tv.o \
	  intel_dvo.o \
	  intel_overlay.o \
	  dvo_ch7xxx.o \
	  dvo_ch7017.o \
	  dvo_ivch.o \
	  dvo_tfp410.o \
	  dvo_sil164.o

i915-$(CONFIG_ACPI)	+= i915_opregion.o
i915-$(CONFIG_COMPAT)   += i915_ioc32.o

obj-$(CONFIG_DRM_I915)  += i915.o

all:
	$(MAKE) -C $(KDIR) M=$(PWD) modules

clean:
	$(MAKE) -C $(KDIR) M=$(PWD) clean
-------------------------------------------------------------------------------

As the difference exist, I would like to know why.

Regards,
Andre
Comment 39 Stefan Dirsch 2010-07-26 13:08:18 UTC
I'm afraid you're asking the wrong persons here. Better try on a openSUSE kernel mailing list instead.
Comment 40 Alex Poddubny 2010-07-26 20:38:13 UTC
Well, there is the solution for kernel 2.6.34:
1. Add X11 repo (http://download.opensuse.org/repositories/X11:/XOrg/openSUSE_11.3/) and update Mesa, libdrm and xorg-x11-driver-video-intel-legacy
2. Edit /etc/X11/xorg.conf.d/50-device.conf:
Section "Device"
  Identifier "Default Device"
  Driver "intellegacy"
EndSection
3. Reboot and enjoy legacy driver stability :)

alex@hp530:~> /sbin/lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03)
Comment 41 David Mills 2010-07-27 00:20:22 UTC
Hi, did all that.  But after a reboot lsmod doesn't show intellegacy but does show radeon (and I still get freezes).  Is there something else I have to change?
Thanks, David.
Comment 42 Stefan Dirsch 2010-07-27 02:27:10 UTC
David, this bugreport is about intel graphics, not about ATI radeon graphics.
Comment 43 Daniel Sonnleithner 2010-07-27 21:58:43 UTC
(In reply to comment #40)
> Well, there is the solution for kernel 2.6.34:
> 1. Add X11 repo
> (http://download.opensuse.org/repositories/X11:/XOrg/openSUSE_11.3/) and update
> Mesa, libdrm and xorg-x11-driver-video-intel-legacy
> 2. Edit /etc/X11/xorg.conf.d/50-device.conf:
> Section "Device"
>   Identifier "Default Device"
>   Driver "intellegacy"
> EndSection
> 3. Reboot and enjoy legacy driver stability :)
> 
> alex@hp530:~> /sbin/lspci | grep VGA
> 00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS,
> 943/940GML Express Integrated Graphics Controller (rev 03)

This workaround is working for me. Didn't test it extensively, though. 

Thanks for the help!

Regards,
Daniel
Comment 44 Thomas Kamps 2010-07-28 17:32:40 UTC
I tried the workaround too. Seems to be stable so far.
But the screen has still a short flicker sometimes.
Comment 45 Alex Poddubny 2010-07-28 17:39:09 UTC
I think that the problem is completely solved. Rebuild from scratch and install xf86-video-intel 2.10.0 release from http://intellinuxgraphics.org/2009Q4.html
Before building drivers you'll need to install xorg-x11-server-sdk, MesaGLw-devel with all dependencies and gcc of course ;) 
Complete guide you can find here: http://intellinuxgraphics.org/install.html
Make in easier:
1. Download and unpack xf86-video-intel-2.10.0.tar.bz2
2. Enter driver directory as root and execute ./configure
3. make install
4. Copy /usr/local/lib/xorg/modules/drivers/intel_drv.so to /usr/lib/xorg/modules/drivers with overwriting
5. Do not forget to comment with # Driver "intellegacy" in /etc/X11/xorg.conf.d/50-device.conf or simply delete this string
6. Restart X with Ctrl+Alt+Backspace (twice) or reboot
Now check the /var/log/Xorg.0.log:
[   ] (II) LoadModule: "intel"
[   ] (II) Loading /usr/lib/xorg/modules/drivers/intel_drv.so
[   ] (II) Module intel: vendor="X.Org Foundation"
[   ] 	compiled for 1.8.0, module version = 2.10.0
[   ] 	Module class: X.Org Video Driver
[   ] 	ABI class: X.Org Video Driver, version 7.0

I tried drivers 2.11.0 and 2.12.0 but 2.10.0 only works properly in my 11.3 with all X11 updates. Now I run it on 2.6.35-rc6 kernel but I think that solution will work on 2.6.34 OTB kernel.
Cheers!
Comment 46 Victor Grischenko 2010-07-28 20:00:03 UTC
(In reply to comment #40)
> Well, there is the solution for kernel 2.6.34:
> 1. Add X11 repo
> (http://download.opensuse.org/repositories/X11:/XOrg/openSUSE_11.3/) and update
> Mesa, libdrm and xorg-x11-driver-video-intel-legacy
> 2. Edit /etc/X11/xorg.conf.d/50-device.conf:
> Section "Device"
>   Identifier "Default Device"
>   Driver "intellegacy"
> EndSection
> 3. Reboot and enjoy legacy driver stability :)
> 
> alex@hp530:~> /sbin/lspci | grep VGA
> 00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS,
> 943/940GML Express Integrated Graphics Controller (rev 03)

Works here to. Thanks!
Comment 47 Stanislav Brabec 2010-07-28 20:03:55 UTC
In reply to comment #40:

Crashes here (Intel G45) one second after login to GNOME. Only users with disabled desktop effects can login.
Comment 48 Thomas Kamps 2010-07-28 20:44:01 UTC
In reply on comment #45:

I played World of Goo for about 40 minutes without freeze and OpenGL compsiting turned on.
Until now no flicker was visible.

It seems that #45 solved the problem. I'll have a close look to it.
Comment 49 David Mills 2010-07-29 01:50:29 UTC
I have a Radeon graphics card and am experiencing the same problem.  I just installed the newly released ATI driver (10.7) that includes support for openSUSE 11.3.

However, I am still experiencing freezes (2 this morning since installing the ATI driver).

So there must be something wrong with the kernel beyond the drivers for graphics cards - unless the ati driver has the same issue is the open source one - which I doubt.
Comment 50 carlos cabrera 2010-08-04 22:02:02 UTC
(In reply to comment #49)
> I have a Radeon graphics card and am experiencing the same problem.  I just
> installed the newly released ATI driver (10.7) that includes support for
> openSUSE 11.3.
> 
> However, I am still experiencing freezes (2 this morning since installing the
> ATI driver).
> 
> So there must be something wrong with the kernel beyond the drivers for
> graphics cards - unless the ati driver has the same issue is the open source
> one - which I doubt.

As someone said earlier, this bug report is about intel graphics. You should open another bug. Further, the bug seems to go away after downgrading the graphics drivers(that is, using "intel-legacy"), so we can't blame the kernel for this; your issue and the issue described here are probably unrelated.
Comment 51 Jeremy P 2010-08-04 22:44:19 UTC
 I am using kernel 2.6.35-rc6-15.1 and suse factory. I have the Xorg files from the factory oss repo and although the video seemed to be fixed, I was able to get it to lock up and or crash X using the Kcometn4(GL) screen saver almost every time it ran. I also see the bug is noted as not resolved, does this mean it is not resolved for 11.3 and relative kernels, or does that mean it is not solved even in 2.6.35-rc6-15.1 in factory? I can personally say it is not solved in the latter. 

Is it a problem with the i915 kernel module or related, or is it the  intel_drv.so in the Xorg packages that has the error ? 

In reply on comment #45

According to https://bugs.freedesktop.org/show_bug.cgi?id=28788 isnt it a prob with pageflipping in the i915 driver files, how can compiling a new intel driver for /usr/lib/xorg/modules/drivers fix the problem?
Comment 52 Thomas Kamps 2010-08-05 07:44:47 UTC
I am using the intellegacy (comment #45) driver for now 9 days without freezing.
Still i see some flickers, but they are rare.
Comment 53 Wim De Meester 2010-08-05 10:01:02 UTC
This is a very nasty bug... We are using a lot of computers at work with intel drivers and we can not update to 11.3 as long as this bug is still there...
Comment 54 Alex Poddubny 2010-08-05 17:45:17 UTC
(In reply to comment #51)

Most likely the problem in KMS so new drivers (2.11.0 and newer) do not work properly on new kernels (2.6.34 and newer). This may also explain the flickers with 2.10.0 and intel-legacy versions.
Comment 55 Forgotten User CSGA97KGGE 2010-08-06 10:03:13 UTC
Well,

Have been using the patches I posted (they are not mine, as I explained) and, so far, have not experienced flickers, or locks.

Indeed, there is no need to modify the original Makefile, as someone pointed. The difference on size was, gasp, because on openSUSE it generate the module unstripped (perhaps because it was late at night, or I misread the outcome of `file i915.ko` I didnt noted it).

The command to create the module, in my case was (after patching):
make -C /usr/src/linux-obj/x86_64/desktop M=$(pwd)

Best regards,
Andre
Comment 56 Wim De Meester 2010-08-06 10:16:36 UTC
I'll try your fix later today, unless someone can tell me there will be an official update which fixes these problems soon.
I've never tried to add patches to the kernel / xorg driver, so I don't know if I will succeed...
Comment 57 Wim De Meester 2010-08-06 15:27:05 UTC
I've installed the patches and made a new i915.ko file. After restarting the computer, everything runs a lot smoother and (after 2 hours) seems much more stable. I still had one X server crash, while running celestia, normal work went very smooth. Also no problems while running stellarium or google earth. Thanks a lot Andre! I hope this fix will soon appear in an official update.
Comment 58 Alex Poddubny 2010-08-06 18:02:22 UTC
(In reply to comment #55)
OK, looked at the kernel 2.6.35-rc6 source currently running, all patches are present, artifacts and crashes are still there. What am I doing wrong? :-)
Comment 59 Wim De Meester 2010-08-07 08:58:17 UTC
Today, I also had a crash again...
Comment 60 Martin Früh 2010-08-07 09:46:36 UTC
any news about this one?

i can confirm that the freeze occurs about two or three times a week with kde desktop effects enabled, GM45/i915, opensuse 11.3, intel driver version 2.12.
Comment 61 Wim De Meester 2010-08-07 09:53:16 UTC
I didn't tell yet, but I cannot work more than 2 hours before the freeze occurs... kde desktop effects enabled, GM45/i915, opensuse 11.3, intel driver version 2.12.
Comment 62 Christoph Feck 2010-08-14 10:22:45 UTC
Isn't this a duplicate of kernel bug https://bugzilla.novell.com/show_bug.cgi?id=617530 ?
Comment 63 Stefan Dirsch 2010-08-14 10:34:08 UTC
(In reply to comment #62)
> Isn't this a duplicate of kernel bug
> https://bugzilla.novell.com/show_bug.cgi?id=617530 ?

Seems so, yes. Thanks you!

*** This bug has been marked as a duplicate of bug 617530 ***
Comment 64 Xavier Callejas 2010-09-07 18:56:49 UTC
Hi,

Why this bug is marked as Resolved? I have openSUSE 11.3 (with online updates) with Xorg updated from online repo. (yesterday) but the bug persist, I have lost work because of this bug. I can't work 2 hours without having a crash.

What is the official solution???

Well, yesterday I downloaded the Intel driver from its git repo. and compiled, replaced intel_drv.x with the new ones and now the stability improved a lot (just one crash in one day).

Thank you in advance.
Xavier.
Comment 65 Stefan Dirsch 2010-09-07 19:27:37 UTC
Xavier, you possibly see a complete different issue.
Comment 66 Xavier Callejas 2010-09-07 20:23:38 UTC
Stefan,

I don't think so, this is my scenario:

Lenovo Thinkpad T61
Intel GM965
openSUSE 11.3
KDE 4.4
Device driver: intel

The system crash randomly but at every graphic session with KDE's gl effects/composite turned on.

The system always crash too WITHOUT KDE's effects when viewing a video in full screen (e.g. from youtube.com), after a couple of minutes.

I update, every day, my Xorg from online repo. hopping the solution came.


Now, with the compiled last git Intel driver the problem it seems to go away.


I'll be waiting your comments.

rgds.
xavier
Comment 67 Stefan Dirsch 2010-09-07 20:59:12 UTC
Xavier, if you would like to update to the latest X.Org and kernel version, this is for you:

zypper ar \
  http://download.opensuse.org/repositories/Kernel:/HEAD/openSUSE_Factory/ \
  Kernel:HEAD
zypper ar \
  http://download.opensuse.org/repositories/X11:/XOrg/openSUSE_Factory/ \
  X11:XOrg
zypper mr -p 90 Kernel:HEAD
zypper mr -p 90 X11:XOrg
zypper ref
zypper dup
zypper in xorg-x11-server-debuginfo xorg-x11-server-debugsource \
          xorg-x11-driver-video-debuginfo xorg-x11-driver-video-debugsource \
          xorg-x11-driver-input-debuginfo xorg-x11-driver-input-debugsource \
          libpixman-1-0-debuginfo libpixman-1-0-debugsource \
          libpciaccess0-debuginfo libpciaccess0-debugsource

I'm afraid there's nothing more I can do for you at the moment.
Comment 68 Stanislav Brabec 2010-09-07 21:13:38 UTC
Fullscreen flash freeze => probably bug 617530
Comment 69 Xavier Callejas 2010-09-07 21:34:30 UTC
I forgot to mention that I already tested last HEAD kernel + last Xorg, but the bug persisted so I went back to stock kernel for now.
Comment 70 Quentin Denis 2010-09-08 10:57:18 UTC
I can confirm that this bug is still open for GM45 on opensuse 11.3 (until some days ago at least since I did not update my box). The only solution is to use intellegacy drivers which forces me to use XRender instead of OpenGL Desktop effects (which lack some of the features with the legacy driver).
Comment 71 Stefan Dirsch 2010-09-08 11:04:27 UTC
Could please users not been involved in this bug before it has been resolved as duplicate (apparently accepted by all involded users) keep this bug resolved? 
You likely see a different issue. Thanks.

*** This bug has been marked as a duplicate of bug 617530 ***
Comment 72 Quentin Denis 2010-09-08 11:20:05 UTC
Well, why shall we open a new bug if the description is the same as this one and https://bugzilla.novell.com/show_bug.cgi?id=617530 ? There is a complete random freeze that is related to the intel driver. It seems that this bug is solved only for one kind of chips, but definitely not for GM45 and probably not for GM965 neither.
Comment 73 Jos van Kan 2010-10-01 18:47:38 UTC
In my setup (i845G) workaround 45 does it for me whereas 40 does not.

In compiling the intel 2.10 driver one should have a vanilla X11 straight from the opensuse repos and *not* from OBS, because otherwise you run into trouble because for some reason these are not downward compatible. This is a known issue BTW and that also causes the *legacy* driver to bork if you upgrade X11 to all of OBS. (Don't ask :-) )
Comment 74 Jiri Slaby 2010-11-07 14:41:56 UTC
*** Bug 626274 has been marked as a duplicate of this bug. ***
Comment 75 Quentin Denis 2010-11-08 16:50:03 UTC
(In reply to comment #45)
> I think that the problem is completely solved. Rebuild from scratch and install
> xf86-video-intel 2.10.0 release from http://intellinuxgraphics.org/2009Q4.html
> Before building drivers you'll need to install xorg-x11-server-sdk,
> MesaGLw-devel with all dependencies and gcc of course ;) 
> Complete guide you can find here: http://intellinuxgraphics.org/install.html
> Make in easier:
> 1. Download and unpack xf86-video-intel-2.10.0.tar.bz2
> 2. Enter driver directory as root and execute ./configure
> 3. make install
> 4. Copy /usr/local/lib/xorg/modules/drivers/intel_drv.so to
> /usr/lib/xorg/modules/drivers with overwriting
> 5. Do not forget to comment with # Driver "intellegacy" in
> /etc/X11/xorg.conf.d/50-device.conf or simply delete this string
> 6. Restart X with Ctrl+Alt+Backspace (twice) or reboot
> Now check the /var/log/Xorg.0.log:
> [   ] (II) LoadModule: "intel"
> [   ] (II) Loading /usr/lib/xorg/modules/drivers/intel_drv.so
> [   ] (II) Module intel: vendor="X.Org Foundation"
> [   ]     compiled for 1.8.0, module version = 2.10.0
> [   ]     Module class: X.Org Video Driver
> [   ]     ABI class: X.Org Video Driver, version 7.0
> 
> I tried drivers 2.11.0 and 2.12.0 but 2.10.0 only works properly in my 11.3
> with all X11 updates. Now I run it on 2.6.35-rc6 kernel but I think that
> solution will work on 2.6.34 OTB kernel.
> Cheers!

Unfortunately I can't compile that version:
-------------
In file included from i810.h:60:0,
                 from i810_accel.c:41:
/usr/include/GL/glxint.h:36:19: fatal error: GL/gl.h: Datei oder Verzeichnis nicht gefunden
compilation terminated.
-------------
What am I missing? I would like to compile that driver since the bug is not closed for me yet (at least not using the official update repo).

My kernel: 2.6.34.7-0.5-default
Comment 76 Alex Poddubny 2010-11-08 17:44:53 UTC
(In reply to comment #75)
> /usr/include/GL/glxint.h:36:19: fatal error: GL/gl.h: Datei oder Verzeichnis
> nicht gefunden
> compilation terminated.
> -------------
> What am I missing?

Install xorg-x11-proto-devel
Comment 77 Quentin Denis 2010-11-08 22:27:39 UTC
(In reply to comment #76)
> (In reply to comment #75)
> > /usr/include/GL/glxint.h:36:19: fatal error: GL/gl.h: Datei oder Verzeichnis
> > nicht gefunden
> > compilation terminated.
> > -------------
> > What am I missing?
> 
> Install xorg-x11-proto-devel
Unfortunately this packages is installed but does not provide the missing file:
quentin@linux-8t3d:~> rpm -ql xorg-x11-proto-devel|grep gl.h
quentin@linux-8t3d:~> 

Alex, have you tried the latest version, 2.13.901? Have the developers fixed the bug in the latest version or is still open on intellinuxgraphics' side?
And is the bug still not fixed in the last kernel-updates openSUSE has provided? Why are users left so long with an open critical bug?
Comment 78 Stefan Dirsch 2010-11-08 22:31:20 UTC
You need Mesa-devel.
Comment 79 Quentin Denis 2010-11-08 22:39:01 UTC
(In reply to comment #78)
> You need Mesa-devel.

it is installed, too:
quentin@linux-8t3d:~> rpm -q Mesa-devel -ql|grep gl.h
/usr/include/EGL/egl.h
/usr/include/GL/mesa_wgl.h
/usr/share/doc/packages/Mesa-devel/egl.html
/usr/share/man/man3/glShadeModel.3gl.gz

I have installed the required packages mentioned in #45. It seems that something else is missing.
Comment 80 Stefan Dirsch 2010-11-08 23:24:26 UTC
You appear to have some strange Mesa-devel package installed. I suggest to reinstall it.
Comment 81 Quentin Denis 2010-11-09 08:37:18 UTC
Thanks Stefan, there was indeed something wrong with my Mesa package. However, what is the current state of the bug fixing? Are there no official updates fixing that bug? Could you please enlighten me on that point. Thanks
Comment 82 Anyi Wang 2010-11-22 08:37:44 UTC
I tried the solution of comment#45 but I can not find the intel_drv.so in /usr/local/lib/xorg/modules/drivers so I can't try if it help.

I tried also the version 2.13, at this time I was able to find the intel driver an to copy it into the /usr/lib64/xorg/modules/driver folder but with no success :-(

I also tried the kernel from the HEAD Repo and install xorg from the x11/xorg repo but it did not help. 

I also observed an interesting (and maybe related issue) when I run
dosbox in the opengl mode it is very slow, and when I run an 3d dos game in it, dosbox quit with an memory access error. 

I don't have all this problems in opensuse 11.2.

I have an GM45 Chipset on an Lenovo R500.

btw: Why the bug is marked as resolved? I don't see any offical update for that issue. (you can correct me if I am wrong)
Comment 83 Fernando Lopresti 2011-02-14 23:05:04 UTC
if you follow #45 instructions but with driver .14 (you'll have to solve some problems related to getting newer libraries, you will want to add the repository for X someone mentions later) then it works flawlessly
Comment 84 Quentin Denis 2011-02-20 08:42:04 UTC
Will this driver version be shipped with opensuse 11.4? I don't want to work around everything by myself again for the next suse release...
Comment 85 Forgotten User q1-mW4hKuE 2011-02-20 11:02:30 UTC
OpenSuse 11.4 comes with Kernel 2.6.37. As fare as I know, this issue is solved in this kernel version.
Comment 86 Victor Grischenko 2011-02-23 20:25:48 UTC
I downloaded OpenSuse 11.4 RC1 KDE live CD. Write it on USB live-stick and loaded on my HP530 laptop.

Right after loading I cee notice "Desktop effects were to slow and have been suspended..."

If I resume desktop effects they works for few seconds and suspended again.

linux@linux:~> uname -a
Linux linux.site 2.6.37-20-default #1 SMP 2011-01-22 00:41:44 +0100 i686 i686 i3


linux@linux:/etc> cat /etc/SuSE-release
openSUSE 11.4 RC 1 (i586)
VERSION = 11.4
CODENAME = Celadon

My laptop has Intel 945GM video. In OpenSuse 11.3 kwin effects doesn't works too but in they was worked in OpenSuse 11.2.
Comment 87 Victor Grischenko 2011-02-23 20:27:39 UTC
Created attachment 415851 [details]
OpenSUSE 11.4 RC1 Xorg.log for HP530 (Suspended effects)
Comment 88 Victor Grischenko 2011-02-25 08:10:05 UTC
So I repeated this bug completely. After booting with OpenSuSE 11.4 RC1 KDE live USB stick I changed window switching mode to "Coverflow" (my locale is not English so I don't know correct name, it looks like iTunes) and turn on desktop cube effect. Than I few times pressed Alt+Tab and switched desktops. After that Kde was freezed. Pressing Ctrl+Alt+Backspace doesn't works and I hear loud beep. I had to hard reboot my laptop.
Comment 89 Stefan Dirsch 2011-02-25 08:28:06 UTC
Victor, please keep this bug closed. Instead open a new one if it really needs to be. With 23 persons in Cc and 88 comments this bug just became confusing and completely useless. You need to press Ctrl-Alt-BS twice to kill the Xserver. Since a few years meanwhile.

*** This bug has been marked as a duplicate of bug 617530 ***