Hi again, I bisected this problem to: 47492a23a128e953bd5087b1cac909cd8124ca5e is the first bad commit commit 47492a23a128e953bd5087b1cac909cd8124ca5e Author: Christian König <deathsimple@xxxxxxxxxxx> Date: Thu Oct 20 12:38:09 2011 +0200 drm/radeon: add radeon_fence_count_emited function Split counting of emited fences out of power management into a seperate function. Signed-off-by: Christian König <deathsimple@xxxxxxxxxxx> Reviewed-by: Jerome Glisse <jglisse@xxxxxxxxxx> Signed-off-by: Dave Airlie <airlied@xxxxxxxxxx> :040000 040000 adbb5199d8ee03a75f65b9ddf6b1d398acfca4d9 67b8d0bfdd5507d82b0c8d8f500f32d140520f0d M drivers That patch (part of it below) moves code into a new function and perhaps changes locking a bit. Is the return in the middle ok? This laptop has two cpus and CONFIG_TREE_PREEMPT_RCU=y CONFIG_PREEMPT_RCU=y CONFIG_PREEMPT_NOTIFIERS=y # CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set CONFIG_PREEMPT=y CONFIG_PREEMPT_COUNT=y # CONFIG_DEBUG_PREEMPT is not set # CONFIG_PREEMPT_TRACER is not set --- a/drivers/gpu/drm/radeon/radeon_fence.c +++ b/drivers/gpu/drm/radeon/radeon_fence.c @@ -368,6 +368,27 @@ void radeon_fence_process(struct radeon_device *rdev, int r } } +int radeon_fence_count_emitted(struct radeon_device *rdev, int ring) +{ + unsigned long irq_flags; + int not_processed = 0; + + read_lock_irqsave(&rdev->fence_lock, irq_flags); + if (!rdev->fence_drv[ring].initialized) + return 0; + + if (!list_empty(&rdev->fence_drv[ring].emitted)) { + struct list_head *ptr; + list_for_each(ptr, &rdev->fence_drv[ring].emitted) { + /* count up to 3, that's enought info */ + if (++not_processed >= 3) + break; + } + } + read_unlock_irqrestore(&rdev->fence_lock, irq_flags); + return not_processed; +} + Mikko ----- Original Message ----- > From: Mikko Vinni > To: "dri-devel@xxxxxxxxxxxxxxxxxxxxx" <dri-devel@xxxxxxxxxxxxxxxxxxxxx> > Cc: airlied; alexander.deucher > Sent: Friday, February 10, 2012 10:06 AM > Subject: Re: scheduling while atomic on radeon rv620, kernel 3.30-rc3 > > Hi, > > Testing a bit more. With the defaults: > > $ cat /sys/class/drm/card0/device/power_profile > default > $ cat /sys/class/drm/card0/device/power_method > profile > > the laptop boots and works fine. However, doing: > > > $ echo dynpm > /sys/class/drm/card0/device/power_method > > leads to the scheduling while atomic bug. > > Mikko > > ----- Original Message ----- >> From: Mikko Vinni: >> >> testing 3.3.0-rc3 on an HP Pavilion dv5 (last tested kernel 3.2.5 works > fine) >> and getting bugs apparently right after the radeon module is loaded. >> >> >> Linux version 3.3.0-rc3-CUST (mikko@koni) (gcc version 4.6.2 20120120 >> (prerelease) (GCC) ) #198 SMP PREEMPT Thu Feb 9 09:36:43 EET 2012 >> Command line: BOOT_IMAGE=Arch_GitKernel ro root=803 ro root=/dev/sda3 >> init=/bin/systemd pcie_aspm=force >> ... >> firewire_core: created device fw0: GUID 00241b00322a5501, S400 >> [drm] radeon defaulting to kernel modesetting. >> [drm] radeon kernel modesetting enabled. >> radeon 0000:01:00.0: power state changed by ACPI to D0 >> radeon 0000:01:00.0: power state changed by ACPI to D0 >> [drm] initializing kernel modesetting (RV620 0x1002:0x95C4 0x103C:0x3600). >> [drm] register mmio base: 0xD2300000 >> [drm] register mmio size: 65536 >> ATOM BIOS: M82 >> radeon 0000:01:00.0: VRAM: 512M 0x0000000000000000 - 0x000000001FFFFFFF > (512M >> used) >> radeon 0000:01:00.0: GTT: 512M 0x0000000020000000 - 0x000000003FFFFFFF >> [drm] Detected VRAM RAM=512M, BAR=256M >> [drm] RAM width 64bits DDR >> [TTM] Zone kernel: Available graphics memory: 2023082 kiB. >> [TTM] Initializing pool allocator. >> [TTM] Initializing DMA pool allocator. >> [drm] radeon: 512M of VRAM memory ready >> [drm] radeon: 512M of GTT memory ready. >> [drm] Supports vblank timestamp caching Rev 1 (10.10.2010). >> [drm] Driver supports precise vblank timestamp query. >> radeon 0000:01:00.0: irq 46 for MSI/MSI-X >> radeon 0000:01:00.0: radeon: using MSI. >> [drm] radeon: irq initialized. >> [drm] GART: num cpu pages 131072, num gpu pages 131072 >> [drm] radeon: ib pool ready. >> [drm] Loading RV620 Microcode >> usbcore: registered new interface driver usbfs >> ... >> [drm] PCIE GART of 512M enabled (table at 0x0000000000040000). >> radeon 0000:01:00.0: WB enabled >> [drm] fence driver on ring 0 use gpu addr 0x20000c00 and cpu addr >> 0xffff8801364bfc00 >> [drm] ring test on 0 succeeded in 1 usecs >> [drm] ib test on ring 0 succeeded in 0 usecs >> [drm] Radeon Display Connectors >> [drm] Connector 0: >> [drm] LVDS >> [drm] Encoders: >> [drm] LCD1: INTERNAL_KLDSCP_LVTMA >> [drm] Connector 1: >> [drm] VGA >> [drm] DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 0x7e4c 0x7e4c >> [drm] Encoders: >> [drm] CRT1: INTERNAL_KLDSCP_DAC1 >> [drm] Connector 2: >> [drm] DIN >> [drm] Encoders: >> [drm] TV1: INTERNAL_KLDSCP_DAC2 >> [drm] Connector 3: >> [drm] HDMI-A >> [drm] HPD1 >> [drm] DDC: 0x7e20 0x7e20 0x7e24 0x7e24 0x7e28 0x7e28 0x7e2c 0x7e2c >> [drm] Encoders: >> [drm] DFP1: INTERNAL_UNIPHY >> [drm] radeon: power management initialized >> >> ... >> [drm] fb mappable at 0xC0142000 >> [drm] vram apper at 0xC0000000 >> [drm] size 4096000 >> [drm] fb depth is 24 >> [drm] pitch is 5120 >> fbcon: radeondrmfb (fb0) is primary device >> Feb 9 16:54:56 koni systemd-fsck[287]: /dev/sda5: clean, 1102549/17514496 >> files, 32142735/70035359 blocks (check in 2 mounts) >> Feb 9 16:54:56 koni systemd-tmpfiles[298]: Two or more conflicting lines > for >> /tmp configured, ignoring. >> Console: switching to colour frame buffer device 160x50 >> fb0: radeondrmfb frame buffer device >> drm: registered panic notifier >> [drm] Initialized radeon 2.13.0 20080528 for 0000:01:00.0 on minor 0 >> snd_hda_intel 0000:01:00.1: irq 47 for MSI/MSI-X >> HDMI status: Codec=0 Pin=3 Presence_Detect=0 ELD_Valid=0 >> input: HDA ATI HDMI HDMI/DP,pcm=3 as >> /devices/pci0000:00/0000:00:02.0/0000:01:00.1/sound/card1/input15 >> EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts: commit=30 >> BUG: scheduling while atomic: kworker/1:3/119/0x00000003 >> Modules linked in: snd_hda_codec_hdmi uvcvideo videobuf2_vmalloc >> videobuf2_memops videobuf2_core videodev v4l2_compat_ioctl32 arc4 >> snd_hda_codec_idt ohci_hcd joydev snd_hda_intel ath5k snd_hda_codec > ehci_hcd >> usbcore snd_hwdep snd_pcm mac80211 radeon ath snd_page_alloc snd_timer snd >> hp_wmi sdhci_pci sparse_keymap sp5100_tco i2c_piix4 soundcore cfg80211 > sdhci wmi >> usb_common drm_kms_helper jmb38x_ms hp_accel psmouse r8169 ttm mmc_core > thermal >> memstick rtc_cmos lis3lv02d evdev k10temp pcspkr input_polldev > firewire_ohci mii >> serio_raw rfkill battery video ac button powernow_k8 mperf processor > autofs4 >> sr_mod cdrom sd_mod pata_acpi ahci libahci pata_atiixp libata scsi_mod >> Pid: 119, comm: kworker/1:3 Not tainted 3.3.0-rc3-CUST #198 >> Call Trace: >> [<ffffffff81440f6c>] __schedule_bug+0x5d/0x61 >> [<ffffffff81446dbc>] __schedule+0x84c/0x9c0 >> [<ffffffff81097b34>] ? check_preempt_curr+0x84/0xa0 >> [<ffffffff8109d519>] ? pull_task+0x49/0x60 >> [<ffffffff8144705a>] schedule+0x3a/0x50 >> [<ffffffff81444936>] schedule_timeout+0x166/0x380 >> [<ffffffff81445ab5>] ? __mutex_lock_slowpath+0x235/0x340 >> [<ffffffff81077fe0>] ? init_timer_deferrable_key+0x20/0x20 >> [<ffffffffa02a940a>] radeon_pm_set_clocks+0x4ca/0x690 [radeon] >> [<ffffffff8108b010>] ? abort_exclusive_wait+0xb0/0xb0 >> [<ffffffffa02a9930>] radeon_dynpm_idle_work_handler+0x160/0x170 > [radeon] >> [<ffffffffa02a97d0>] ? radeon_acpi_event+0xc0/0xc0 [radeon] >> [<ffffffff8108509b>] process_one_work+0x11b/0x4d0 >> [<ffffffff81085a1d>] worker_thread+0x15d/0x340 >> [<ffffffff810858c0>] ? manage_workers.isra.27+0x220/0x220 >> [<ffffffff8108a77e>] kthread+0x8e/0xa0 >> [<ffffffff81449df4>] kernel_thread_helper+0x4/0x10 >> [<ffffffff8108a6f0>] ? kthread_freezable_should_stop+0x60/0x60 >> [<ffffffff81449df0>] ? gs_change+0xb/0xb >> BUG: scheduling while atomic: kworker/1:3/119/0x00000003 >> Modules linked in: snd_hda_codec_hdmi uvcvideo videobuf2_vmalloc >> videobuf2_memops videobuf2_core videodev v4l2_compat_ioctl32 arc4 >> snd_hda_codec_idt ohci_hcd joydev snd_hda_intel ath5k snd_hda_codec > ehci_hcd >> usbcore snd_hwdep snd_pcm mac80211 radeon ath snd_page_alloc snd_timer snd >> hp_wmi sdhci_pci sparse_keymap sp5100_tco i2c_piix4 soundcore cfg80211 > sdhci wmi >> usb_common drm_kms_helper jmb38x_ms hp_accel psmouse r8169 ttm mmc_core > thermal >> memstick rtc_cmos lis3lv02d evdev k10temp pcspkr input_polldev > firewire_ohci mii >> serio_raw rfkill battery video ac button powernow_k8 mperf processor > autofs4 >> sr_mod cdrom sd_mod pata_acpi ahci libahci pata_atiixp libata scsi_mod >> Pid: 119, comm: kworker/1:3 Not tainted 3.3.0-rc3-CUST #198 >> Call Trace: >> [<ffffffff81440f6c>] __schedule_bug+0x5d/0x61 >> [<ffffffff81446dbc>] __schedule+0x84c/0x9c0 >> [<ffffffff81097b34>] ? check_preempt_curr+0x84/0xa0 >> [<ffffffff8109d519>] ? pull_task+0x49/0x60 >> [<ffffffff81078ac3>] ? lock_timer_base.isra.33+0x33/0x70 >> [<ffffffff81078b91>] ? try_to_del_timer_sync+0x91/0x150 >> [<ffffffff8144705a>] schedule+0x3a/0x50 >> [<ffffffff81444936>] schedule_timeout+0x166/0x380 >> [<ffffffff81077fe0>] ? init_timer_deferrable_key+0x20/0x20 >> [<ffffffffa02a9521>] radeon_pm_set_clocks+0x5e1/0x690 [radeon] >> [<ffffffff8108b010>] ? abort_exclusive_wait+0xb0/0xb0 >> [<ffffffffa02a9930>] radeon_dynpm_idle_work_handler+0x160/0x170 > [radeon] >> [<ffffffffa02a97d0>] ? radeon_acpi_event+0xc0/0xc0 [radeon] >> [<ffffffff8108509b>] process_one_work+0x11b/0x4d0 >> [<ffffffff81085a1d>] worker_thread+0x15d/0x340 >> [<ffffffff810858c0>] ? manage_workers.isra.27+0x220/0x220 >> [<ffffffff8108a77e>] kthread+0x8e/0xa0 >> [<ffffffff81449df4>] kernel_thread_helper+0x4/0x10 >> [<ffffffff8108a6f0>] ? kthread_freezable_should_stop+0x60/0x60 >> [<ffffffff81449df0>] ? gs_change+0xb/0xb >> BUG: workqueue leaked lock or atomic: kworker/1:3/0x00000002/119 >> last function: radeon_dynpm_idle_work_handler+0x0/0x170 [radeon] >> Pid: 119, comm: kworker/1:3 Not tainted 3.3.0-rc3-CUST #198 >> Call Trace: >> [<ffffffff810853c0>] process_one_work+0x440/0x4d0 >> [<ffffffff81085a1d>] worker_thread+0x15d/0x340 >> [<ffffffff810858c0>] ? manage_workers.isra.27+0x220/0x220 >> [<ffffffff8108a77e>] kthread+0x8e/0xa0 >> [<ffffffff81449df4>] kernel_thread_helper+0x4/0x10 >> [<ffffffff8108a6f0>] ? kthread_freezable_should_stop+0x60/0x60 >> [<ffffffff81449df0>] ? gs_change+0xb/0xb >> BUG: workqueue leaked lock or atomic: kworker/1:3/0x00000002/119 >> last function: cfq_kick_queue+0x0/0x50 >> Pid: 119, comm: kworker/1:3 Not tainted 3.3.0-rc3-CUST #198 >> Call Trace: >> [<ffffffff810853c0>] process_one_work+0x440/0x4d0 >> [<ffffffff81085a1d>] worker_thread+0x15d/0x340 >> [<ffffffff810858c0>] ? manage_workers.isra.27+0x220/0x220 >> [<ffffffff8108a77e>] kthread+0x8e/0xa0 >> [<ffffffff81449df4>] kernel_thread_helper+0x4/0x10 >> [<ffffffff8108a6f0>] ? kthread_freezable_should_stop+0x60/0x60 >> [<ffffffff81449df0>] ? gs_change+0xb/0xb >> BUG: workqueue leaked lock or atomic: kworker/1:3/0x00000002/119 >> last function: do_dbs_timer+0x0/0x3d0 >> Pid: 119, comm: kworker/1:3 Not tainted 3.3.0-rc3-CUST #198 >> ... >> >> >> These messages continued to scroll by until the machine hanged up. >> Does it look familiar to anybody? Anything to test or give more information >> about? >> >> >> Mikko >> > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel