You are not logged in.

#1 2013-03-23 22:55:34

gamanakis
Member
Registered: 2012-10-11
Posts: 17

[SOLVED] linux 3.8 and X4500: X11 hangs periodically

Since the upgrade from 3.7.10 to 3.8.x the X11 using 3D Acceleration (X4500 Intel) hangs periodically. drm_kms_helper.poll=0 doesn't help. Any ideas?

Last edited by gamanakis (2013-04-07 21:59:07)

Offline

#2 2013-03-23 22:59:51

MagicSkyFairy
Member
Registered: 2013-03-14
Posts: 79

Re: [SOLVED] linux 3.8 and X4500: X11 hangs periodically

Did you just upgrade the kernel, or your whole system?  Maybe downgrading xorg-server will do the trick.

You may have already seen his, but I'll link it anyways.

https://wiki.archlinux.org/index.php/In … leshooting

Some issues with X crashing, GPU hanging, or problems with X freezing, can be fixed by disabling the GPU usage with the NoAccel option:

It sounds like you didn't have issues before, so that's why I say it might be a compatibility issue, and that's a pretty common issue with closed-source graphic drivers.

Last edited by MagicSkyFairy (2013-03-23 23:04:51)


I have wasted atleast a second of your time by making you read my signature.

Offline

#3 2013-03-23 23:07:36

gamanakis
Member
Registered: 2012-10-11
Posts: 17

Re: [SOLVED] linux 3.8 and X4500: X11 hangs periodically

I upgraded just the Kernel. I use Cinnamon so the 3D Acceleration is needed.

Offline

#4 2013-03-24 22:43:20

gamanakis
Member
Registered: 2012-10-11
Posts: 17

Re: [SOLVED] linux 3.8 and X4500: X11 hangs periodically

The problem appears to be solved in the 3.9-rc4.

Offline

#5 2013-03-30 02:09:42

gamanakis
Member
Registered: 2012-10-11
Posts: 17

Re: [SOLVED] linux 3.8 and X4500: X11 hangs periodically

It is the same as this and this .
Persists with 3.8.5 from ck-repo.

Last edited by gamanakis (2013-03-30 02:10:35)

Offline

#6 2013-03-30 09:15:02

zequav
Member
Registered: 2013-03-02
Posts: 9

Re: [SOLVED] linux 3.8 and X4500: X11 hangs periodically

gamanakis wrote:

The problem appears to be solved in the 3.9-rc4.

Not for me. Ok, maybe the symptoms: with 3.9-rc4, X is smooth even when i915 starts interrupting like crazy and kworker takes 30% of cpu. At least the computer is usable and doesn't hang. But the underlying issue (i915 interrupting at a rate of 500 interrupts per second) is a problem that should be resolved. I have this with 3.9_rc4:

           CPU0       CPU1       
  0:      71181      71669   IO-APIC-edge      timer
  1:        769        752   IO-APIC-edge      i8042
  8:         15         14   IO-APIC-edge      rtc0
  9:       5251       5256   IO-APIC-fasteoi   acpi
 12:      23829      23608   IO-APIC-edge      i8042
 16:          0          0   IO-APIC-fasteoi   uhci_hcd:usb3, uhci_hcd:usb6
 19:          0          0   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb5
 23:         14         16   IO-APIC-fasteoi   ehci_hcd:usb2, uhci_hcd:usb4
 42:     190035     189675   PCI-MSI-edge      i915
 43:       8049       8086   PCI-MSI-edge      ahci
 44:       6924       5177   PCI-MSI-edge      iwlwifi
 45:        129        113   PCI-MSI-edge      snd_hda_intel
NMI:          0          0   Non-maskable interrupts
LOC:     126108     131456   Local timer interrupts
SPU:          0          0   Spurious interrupts
PMI:          0          0   Performance monitoring interrupts
IWI:          0          0   IRQ work interrupts
RTR:          0          0   APIC ICR read retries
RES:      27861       3724   Rescheduling interrupts
CAL:      58157      56358   Function call interrupts
TLB:        629        654   TLB shootdowns
TRM:          0          0   Thermal event interrupts
THR:          0          0   Threshold APIC interrupts
MCE:          0          0   Machine check exceptions
MCP:          2          2   Machine check polls
ERR:          0
MIS:          0

This was in just 7 minutes.

Offline

#7 2013-04-01 18:48:18

gamanakis
Member
Registered: 2012-10-11
Posts: 17

Re: [SOLVED] linux 3.8 and X4500: X11 hangs periodically

Testing linux-3.9-rc5. Seems a lot better. 10 minutes uptime, 22809 interrupts.

Offline

#8 2013-04-04 17:53:22

gamanakis
Member
Registered: 2012-10-11
Posts: 17

Re: [SOLVED] linux 3.8 and X4500: X11 hangs periodically

Currently bisecting the 3.7 - 3.8 git repo. Seems like there is a problem with drm. Will report back soon.

Offline

#9 2013-04-04 19:26:08

gamanakis
Member
Registered: 2012-10-11
Posts: 17

Re: [SOLVED] linux 3.8 and X4500: X11 hangs periodically

Seems like the culprit lesion is the following:

commit 69787f7da6b2adc4054357a661aaa1701a9ca76f
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Tue Oct 23 18:23:34 2012 +0000

    drm: run the hpd irq event code directly
    
    All drivers already have a work item to run the hpd code, so we don't
    need to launch a new one in the helper code. Dave Airlie mentioned
    that the cancel+re-queue might paper over DP related hpd ping-pongs,
    hence why this is split out.
    
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>

diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
index 9adbd2b..a8a61e4 100644
--- a/drivers/gpu/drm/drm_crtc_helper.c
+++ b/drivers/gpu/drm/drm_crtc_helper.c
@@ -1019,12 +1019,9 @@ void drm_kms_helper_poll_enable(struct drm_device *dev)
 }
 EXPORT_SYMBOL(drm_kms_helper_poll_enable);
 
-static void hpd_irq_event_execute(struct work_struct *work);
-
 void drm_kms_helper_poll_init(struct drm_device *dev)
 {
 	INIT_DELAYED_WORK(&dev->mode_config.output_poll_work, output_poll_execute);
-	INIT_DELAYED_WORK(&dev->mode_config.hpd_irq_work, hpd_irq_event_execute);
 	dev->mode_config.poll_enabled = true;
 
 	drm_kms_helper_poll_enable(dev);
@@ -1037,10 +1034,8 @@ void drm_kms_helper_poll_fini(struct drm_device *dev)
 }
 EXPORT_SYMBOL(drm_kms_helper_poll_fini);
 
-static void hpd_irq_event_execute(struct work_struct *work)
+void drm_helper_hpd_irq_event(struct drm_device *dev)
 {
-	struct delayed_work *delayed_work = to_delayed_work(work);
-	struct drm_device *dev = container_of(delayed_work, struct drm_device, mode_config.hpd_irq_work);
 	struct drm_connector *connector;
 	enum drm_connector_status old_status;
 	bool changed = false;
@@ -1071,11 +1066,4 @@ static void hpd_irq_event_execute(struct work_struct *work)
 	if (changed)
 		drm_kms_helper_hotplug_event(dev);
 }
-
-void drm_helper_hpd_irq_event(struct drm_device *dev)
-{
-	cancel_delayed_work(&dev->mode_config.hpd_irq_work);
-	if (drm_kms_helper_poll)
-		schedule_delayed_work(&dev->mode_config.hpd_irq_work, 0);
-}
 EXPORT_SYMBOL(drm_helper_hpd_irq_event);
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index ccff8c9..1f5f1d6 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -793,7 +793,6 @@ struct drm_mode_config {
 	/* output poll support */
 	bool poll_enabled;
 	struct delayed_work output_poll_work;
-	struct delayed_work hpd_irq_work;
 
 	/* pointers to standard properties */
 	struct list_head property_blob_list;

Someone please try to reverse this patch and report.

Offline

#10 2013-04-05 08:38:07

zequav
Member
Registered: 2013-03-02
Posts: 9

Re: [SOLVED] linux 3.8 and X4500: X11 hangs periodically

gamanakis wrote:

Seems like the culprit lesion is the following:
...
Someone please try to reverse this patch and report.

Mmmm nope. At least on 3.9.0-rc5. The patch reverses cleanly (with fuzzy) and the kernel compiles fine. At first it seemed promising (just 7 interrupts after a few minutes) but after a while i915 started interrupting again at 500 int/sec hmm

Offline

#11 2013-04-05 10:43:29

iambig
Member
Registered: 2012-08-21
Posts: 25

Re: [SOLVED] linux 3.8 and X4500: X11 hangs periodically

i have same stuck too after upgrade of kernel. i use i915 but on a hd3000.
should i check in someway if it is the same problem?
i was thinking about a problem with hd, but it could be i915.
otherwise thx in advance for the help.


Carthago delenda est

Offline

#12 2013-04-05 19:44:26

gamanakis
Member
Registered: 2012-10-11
Posts: 17

Re: [SOLVED] linux 3.8 and X4500: X11 hangs periodically

zequav wrote:

Mmmm nope. At least on 3.9.0-rc5. The patch reverses cleanly (with fuzzy) and the kernel compiles fine. At first it seemed promising (just 7 interrupts after a few minutes) but after a while i915 started interrupting again at 500 int/sec hmm

I meant that the GPU hangs no more. The interrupts is another issue. I am investigating further on it. Will report back soon. wink

Offline

#13 2013-04-05 22:20:03

gamanakis
Member
Registered: 2012-10-11
Posts: 17

Re: [SOLVED] linux 3.8 and X4500: X11 hangs periodically

I ended up not reverting the commit but patching it:

diff -rupN a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
--- a/drivers/gpu/drm/drm_crtc_helper.c 2013-02-19 00:58:34.000000000 +0100
+++ b/drivers/gpu/drm/drm_crtc_helper.c 2013-04-05 23:10:36.454936677 +0200
@@ -1067,7 +1067,7 @@ void drm_helper_hpd_irq_event(struct drm
        enum drm_connector_status old_status;
        bool changed = false;

-       if (!dev->mode_config.poll_enabled)
+      if (!dev->mode_config.poll_enabled || !drm_kms_helper_poll)
               return;

       mutex_lock(&dev->mode_config.mutex);

i915 interrupts are however high.

Last edited by gamanakis (2013-04-05 22:23:05)

Offline

#14 2013-04-07 21:55:09

gamanakis
Member
Registered: 2012-10-11
Posts: 17

Re: [SOLVED] linux 3.8 and X4500: X11 hangs periodically

Bug in upstream. Patch from devs filed.
See:
https://patchwork.kernel.org/patch/2400621/
https://patchwork.kernel.org/patch/2402211/

Last edited by gamanakis (2013-04-07 21:56:45)

Offline

#15 2013-04-09 02:47:41

Jodell
Member
Registered: 2009-10-09
Posts: 285

Re: [SOLVED] linux 3.8 and X4500: X11 hangs periodically

Can this patch be applied to the 3.8 kernel?

Offline

Board footer

Powered by FluxBB