Bug 87552

Summary: [NV1A] 3.18.1 BUG on modprobe nouveau in drivers/gpu/drm/nouveau/core/core/event.c:42
Product: xorg Reporter: Bruno <bonbons>
Component: Driver/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: major    
Priority: medium    
Version: unspecified   
Hardware: x86 (IA32)   
OS: Linux (All)   
URL: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ff4c0d5213b015e60aa87c1352604f10ba9c3e12
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
BUG_ON(!spin_is_locked(lock)) is taboo on UP none

Description Bruno 2014-12-21 13:47:24 UTC
[  289.984831] nouveau  [  DEVICE][0000:02:00.0] BOOT0  : 0x01a000b1
[  289.991043] nouveau  [  DEVICE][0000:02:00.0] Chipset: nForce (NV1A)
[  289.997439] nouveau  [  DEVICE][0000:02:00.0] Family : NV10
[  290.003256] nouveau  [   VBIOS][0000:02:00.0] checking PRAMIN for image...
[  290.045349] nouveau  [   VBIOS][0000:02:00.0] ... checksum invalid
[  290.051619] nouveau  [   VBIOS][0000:02:00.0] checking PROM for image...
[  290.058391] nouveau  [   VBIOS][0000:02:00.0] ... signature not found
[  290.064895] nouveau  [   VBIOS][0000:02:00.0] checking ACPI for image...
[  290.071710] nouveau  [   VBIOS][0000:02:00.0] ... signature not found
[  290.078205] nouveau  [   VBIOS][0000:02:00.0] checking PCIROM for image...
[  290.085961] nouveau  [   VBIOS][0000:02:00.0] ... appears to be valid
[  290.092511] nouveau  [   VBIOS][0000:02:00.0] using image from PCIROM
[  290.099003] nouveau  [   VBIOS][0000:02:00.0] BMP version 5.14
[  290.105141] nouveau  [   VBIOS][0000:02:00.0] version 03.1a.01.03.00
[  290.111606] nouveau W[   VBIOS][0000:02:00.0] DCB contains no useful data
[  290.120249] nouveau W[   VBIOS][0000:02:00.0] DCB contains no useful data
[  290.128356] nouveau W[   VBIOS][0000:02:00.0] DCB contains no useful data
[  290.135257] nouveau W[   VBIOS][0000:02:00.0] DCB contains no useful data
[  290.142279] nouveau W[  PTIMER][0000:02:00.0] unknown input clock freq
[  290.148881] nouveau  [     PFB][0000:02:00.0] RAM type: stolen system memory
[  290.155987] nouveau  [     PFB][0000:02:00.0] RAM size: 32 MiB
[  290.161882] nouveau  [     PFB][0000:02:00.0]    ZCOMP: 0 tags
[  290.173304] nouveau  [     CLK][0000:02:00.0] --:   
[  290.178387] ------------[ cut here ]------------
[  290.180008] kernel BUG at /usr/src/linux-git/drivers/gpu/drm/nouveau/core/core/event.c:42!
[  290.180008] invalid opcode: 0000 [#1] 
[  290.180008] Modules linked in: nouveau(+) wmi ttm drm_kms_helper nfsv3 nfs_acl nfs lockd grace sunrpc
[  290.180008] CPU: 0 PID: 41 Comm: kworker/0:2 Not tainted 3.18.1-jupiter #1
[  290.180008] Hardware name: NVIDIA Corporation. nFORCE-MCP/MS-6373, BIOS 6.00 PG 04/12/2002
[  290.180008] Workqueue: events nouveau_pstate_work [nouveau]
[  290.180008] task: dd71c000 ti: dd720000 task.ti: dd720000
[  290.180008] EIP: 0060:[<dea19e63>] EFLAGS: 00010046 CPU: 0
[  290.180008] EIP is at nvkm_event_get+0x3/0x10 [nouveau]
[  290.180008] EAX: dc31eab4 EBX: 00000286 ECX: 00000000 EDX: 00000001
[  290.180008] ESI: 00000000 EDI: ffffffff EBP: dd721ea8 ESP: dd721ea8
[  290.180008]  DS: 007b ES: 007b FS: 0000 GS: 00e0 SS: 0068
[  290.180008] CR0: 8005003b CR2: b7742000 CR3: 1cf95000 CR4: 000007d0
[  290.180008] Stack:
[  290.180008]  dd721eb4 dea1ce02 dce7cb28 dd721f04 dea2f386 00000000 00000005 deaea246
[  290.180008]  ffffffff 00000001 ffffffff ffffffff ffffffff 00000000 00000000 dd71c000
[  290.180008]  dce07670 ffffffff 00000000 dce7ca50 dce7cb28 00000000 dd6f8e70 dd721f44
[  290.180008] Call Trace:
[  290.180008]  [<dea1ce02>] nvkm_notify_get+0x32/0x40 [nouveau]
[  290.180008]  [<dea2f386>] nouveau_pstate_work+0x396/0x3a0 [nouveau]
[  290.180008]  [<c1048af7>] process_one_work+0x1d7/0x360
[  290.180008]  [<c104912f>] worker_thread+0x2af/0x380
[  290.180008]  [<c1048e80>] ? rescuer_thread+0x1d0/0x1d0
[  290.180008]  [<c1048e80>] ? rescuer_thread+0x1d0/0x1d0
[  290.180008]  [<c104cb64>] kthread+0xa4/0xb0
[  290.180008]  [<c14bcc40>] ret_from_kernel_thread+0x20/0x30
[  290.180008]  [<c104cac0>] ? flush_kthread_worker+0x70/0x70
[  290.180008] Code: cf a9 e2 90 8d 74 26 00 83 c4 0c 5b 5e 5f 5d c3 66 90 66 90 66 90 66 90 55 89 e5 0f 0b 8d 74 
[  290.180008] EIP: [<dea19e63>] nvkm_event_get+0x3/0x10 [nouveau] SS:ESP 0068:dd721ea8
[  290.180008] ---[ end trace da282f24d1451e27 ]---
Comment 1 Bruno 2014-12-21 16:00:50 UTC
This still applies to 3.19-rc1, once crash reported in bug #87554 is fixed.
Comment 2 Bruno 2014-12-21 16:36:27 UTC
Created attachment 111115 [details] [review]
BUG_ON(!spin_is_locked(lock)) is taboo on UP

void
nvkm_event_get(struct nvkm_event *event, u32 types, int index)
{
        BUG_ON(!spin_is_locked(&event->refs_lock));
        while (types) {
                int type = __ffs(types); types &= ~(1 << type);
                if (++event->refs[index * event->types_nr + type] == 1) {
                        if (event->func->init)
                                event->func->init(event, 1 << type, index);
                }
        }
}

Is it ever valid to do these spin_is_locked() checks on !SMP system?

!SMP system do not have spinlocks at all!
Comment 3 Bruno 2015-01-12 19:05:13 UTC
Fixed in v3.19-rc4. Requested for backport to 3.17, 3.18 stable.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.