|
Bugzilla – Full Text Bug Listing |
| Summary: | intel [945G/965GM/G45] System freezes in GNOME/KDE (sometimes) | ||
|---|---|---|---|
| Product: | [openSUSE] openSUSE 11.3 | Reporter: | Atri Bhattacharya <badshah400> |
| Component: | X.Org | Assignee: | 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
Created attachment 370245 [details]
YaST logs
It seems like GNOME problem. 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. (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 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. Most important files are /var/log/messages /var/log/Xorg.0.log.old (if rebooted into runlevel 5) Created attachment 370907 [details]
Archive containing /var/log/Xorg.*.log.old and /var/log/messages
(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 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 Hmm. Nothing obvious. Neither in /var/log/{messages,warn} nor in /var/log/Xorg.0.log.old.
I believe it would be worth a try to update to latest Mesa, libdrm and xorg-x11-driver-video packages from obs://X11:XOrg. (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. Thanks a lot for the feedback. 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.
Created attachment 373711 [details]
/var/log/messages
Created attachment 373712 [details]
/var/log/warn
Created attachment 373713 [details]
Xorg.0.log and Xorg.0.log.old
Oops, changed the assignee by mistake. Also this happened while I was using KDE and not Gnome. 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. 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. 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. same problem on intel 965gm 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.) 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. Created attachment 376946 [details]
Xorg.0.log.old
Created attachment 376950 [details]
/var/log/messages
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 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 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.
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 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 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] (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. 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). 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
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. 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. (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 I'm afraid you're asking the wrong persons here. Better try on a openSUSE kernel mailing list instead. 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) 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. David, this bugreport is about intel graphics, not about ATI radeon graphics. (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 I tried the workaround too. Seems to be stable so far. But the screen has still a short flicker sometimes. 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! (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! In reply to comment #40: Crashes here (Intel G45) one second after login to GNOME. Only users with disabled desktop effects can login. 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. 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. (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. 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? I am using the intellegacy (comment #45) driver for now 9 days without freezing. Still i see some flickers, but they are rare. 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... (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. 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 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... 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. (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? :-) Today, I also had a crash again... 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. 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. Isn't this a duplicate of kernel bug https://bugzilla.novell.com/show_bug.cgi?id=617530 ? (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 *** 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. Xavier, you possibly see a complete different issue. 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 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. Fullscreen flash freeze => probably bug 617530 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. 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). 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 *** 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. 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 :-) ) *** Bug 626274 has been marked as a duplicate of this bug. *** (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 (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 (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? You need Mesa-devel. (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. You appear to have some strange Mesa-devel package installed. I suggest to reinstall it. 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 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) 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 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... OpenSuse 11.4 comes with Kernel 2.6.37. As fare as I know, this issue is solved in this kernel version. 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. Created attachment 415851 [details]
OpenSUSE 11.4 RC1 Xorg.log for HP530 (Suspended effects)
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. 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 *** |