[bisected regression] Re: scheduling while atomic on radeon rv620, kernel 3.30-rc3
Mikko Vinni
mmvinni at yahoo.com
Sun Feb 12 09:20:03 PST 2012
Hi again,
I bisected this problem to:
47492a23a128e953bd5087b1cac909cd8124ca5e is the first bad commit
commit 47492a23a128e953bd5087b1cac909cd8124ca5e
Author: Christian König <deathsimple at vodafone.de>
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 at vodafone.de>
Reviewed-by: Jerome Glisse <jglisse at redhat.com>
Signed-off-by: Dave Airlie <airlied at redhat.com>
: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 at lists.freedesktop.org" <dri-devel at lists.freedesktop.org>
> 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 at 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
>>
>
More information about the dri-devel
mailing list