Bug 12216

Summary: Error when drm is loaded
Product: Drivers Reporter: François Valenduc (francoisvalenduc)
Component: Video(DRI - non Intel)Assignee: Dave Airlie (airlied)
Status: CLOSED CODE_FIX    
Severity: normal CC: airlied, rjw
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.28-rc8 Subsystem:
Regression: Yes Bisected commit-id:
Bug Depends on:    
Bug Blocks: 11808    
Attachments: output of dmesg
IRQ fix for radeon IRq disabling

Description François Valenduc 2008-12-13 09:59:59 UTC
Latest working kernel version: maybe 2.6.28-rc6
Earliest failing kernel version: 2.6.28-rc8
Distribution: Gentoo
Hardware Environment: Acer Travelmate 4001 Lmi, ATI Radeon Mobility 9700
Software Environment:
Problem Description:

Steps to reproduce:

When the drm module is loaded during X startup, I get the following error:

[   55.642188] [drm] Initialized drm 1.1.0 20060810
[   55.757559] [drm] Initialized radeon 1.29.0 20080528 on minor 0
[   56.920297] agpgart-intel 0000:00:00.0: AGP 2.0 bridge
[   56.920314] agpgart-intel 0000:00:00.0: putting AGP V2 device into 4x mode
[   56.920347] pci 0000:01:00.0: putting AGP V2 device into 4x mode
[   57.686654] irq 6: nobody cared (try booting with the "irqpoll" option)
[   57.686660] Pid: 7472, comm: X Not tainted 2.6.28-rc8-git #22
[   57.686663] Call Trace:
[   57.686671]  [<c0453414>] __report_bad_irq+0x24/0x90
[   57.686675]  [<c04535e9>] note_interrupt+0x169/0x1b0
[   57.686679]  [<c0452575>] handle_IRQ_event+0x25/0x60
[   57.686683]  [<c0453fa0>] handle_level_irq+0x0/0xa0
[   57.686686]  [<c045401c>] handle_level_irq+0x7c/0xa0
[   57.686688]  <IRQ>  [<c04218c0>] __do_softirq+0x0/0x100
[   57.686695]  [<c0404727>] common_interrupt+0x23/0x28
[   57.686698]  [<c04218c0>] __do_softirq+0x0/0x100
[   57.686702]  [<c04218eb>] __do_softirq+0x2b/0x100
[   57.686705]  [<c04218c0>] __do_softirq+0x0/0x100
[   57.686707]  <IRQ>  [<c0421895>] irq_exit+0x45/0x70
[   57.686712]  [<c0405e1f>] do_IRQ+0x7f/0xd0
[   57.686718]  [<c05dbbbe>] io_schedule+0xe/0x20
[   57.686721]  [<c0404727>] common_interrupt+0x23/0x28
[   57.686731]  [<e0ee007b>] radeon_cp_dispatch_vertex+0x22b/0x370 [radeon]
[   57.686747]  [<e0df591f>] drm_vblank_get+0x3f/0x160 [drm]
[   57.686751]  [<c0457b61>] filemap_fault+0xe1/0x3d0
[   57.686763]  [<e0df5f5f>] drm_modeset_ctl+0x9f/0xb0 [drm]
[   57.686775]  [<e0df5ec0>] drm_modeset_ctl+0x0/0xb0 [drm]
[   57.686786]  [<e0df43fa>] drm_ioctl+0x1ba/0x2f0 [drm]
[   57.686791]  [<c046369e>] __do_fault+0x15e/0x390
[   57.686802]  [<e0df4240>] drm_ioctl+0x0/0x2f0 [drm]
[   57.686807]  [<c0484dc9>] vfs_ioctl+0x69/0x70
[   57.686810]  [<c0484f6c>] do_vfs_ioctl+0x5c/0x430
[   57.686815]  [<c0414680>] do_page_fault+0x0/0x6c0
[   57.686819]  [<c041490c>] do_page_fault+0x28c/0x6c0
[   57.686824]  [<c047a2b6>] vfs_write+0x106/0x140
[   57.686853]  [<e1052c00>] reiserfs_file_write+0x0/0xc0 [reiserfs]
[   57.686857]  [<c04853a8>] sys_ioctl+0x68/0x80
[   57.686860]  [<c0403bd9>] sysenter_do_call+0x12/0x25
[   57.686865]  [<c05d0000>] unix_bind+0xd0/0x2b0
[   57.686867] handlers:
[   57.686868] [<e0d604a0>] (usb_hcd_irq+0x0/0x70 [usbcore])
[   57.686895] [<e0d604a0>] (usb_hcd_irq+0x0/0x70 [usbcore])
[   57.686915] [<e0d604a0>] (usb_hcd_irq+0x0/0x70 [usbcore])
[   57.686934] [<e0e1da30>] (b44_interrupt+0x0/0x100 [b44])
[   57.686944] Disabling IRQ #6
[   58.899533] [drm] Setting GART location based on new memory map
[   58.899541] [drm] Loading R300 Microcode
[   58.899589] [drm] Num pipes: 1
[   58.899595] [drm] writeback test succeeded in 1 usecs

It doesn't seems to cause any serious problem. Does anybody have any idea about this error ?
Comment 1 François Valenduc 2008-12-13 10:00:34 UTC
Created attachment 19280 [details]
output of dmesg
Comment 2 François Valenduc 2008-12-13 11:42:21 UTC
After a git-bisect run, it appears that the following commit is the first bad one:

52440211dcdc52c0b757f8b34d122e11b12cdd50 is first bad commit
commit 52440211dcdc52c0b757f8b34d122e11b12cdd50
Author: Keith Packard <keithp@keithp.com>
Date:   Tue Nov 18 09:30:25 2008 -0800

    drm: move drm vblank initialization/cleanup to driver load/unload

    drm vblank initialization keeps track of the changes in driver-supplied
    frame counts across vt switch and mode setting, but only if you let it by
    not tearing down the drm vblank structure.

    Signed-off-by: Keith Packard <keithp@keithp.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>

If I revert it, the problem doesn't occur.
Comment 3 Rafael J. Wysocki 2008-12-13 15:01:14 UTC
First-Bad-Commit : 52440211dcdc52c0b757f8b34d122e11b12cdd50
Comment 4 Dave Airlie 2008-12-21 15:11:45 UTC
Created attachment 19407 [details]
IRQ fix for radeon IRq disabling

Can you please test with the attached patch?
Comment 5 François Valenduc 2008-12-22 10:15:56 UTC
This patch seems to solve the problem. The error doesn't occur when I apply it.
Thanks for your help.
Comment 6 Rafael J. Wysocki 2008-12-23 06:15:49 UTC
*** Bug 12178 has been marked as a duplicate of this bug. ***
Comment 7 Rafael J. Wysocki 2009-01-11 10:41:06 UTC
Fixed by commit 077ebed54fe66612f58b076628a72eca2be8df90 .