[Nouveau] [PATCH 1/3] drm/nouveau/therm: turn on a fan only when crossing threshold in positive direction
+ the same for shutdown threshold - seems impossible, but shutdown can fail. Signed-off-by: Marcin Slusarz marcin.slus...@gmail.com --- drivers/gpu/drm/nouveau/core/subdev/therm/temp.c | 11 +++ 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/nouveau/core/subdev/therm/temp.c b/drivers/gpu/drm/nouveau/core/subdev/therm/temp.c index bf9b3ce..8f27b44 100644 --- a/drivers/gpu/drm/nouveau/core/subdev/therm/temp.c +++ b/drivers/gpu/drm/nouveau/core/subdev/therm/temp.c @@ -105,7 +105,7 @@ void nouveau_therm_sensor_event(struct nouveau_therm *therm, return; if (dir == NOUVEAU_THERM_THRS_FALLING) - nv_info(therm, temperature (%u C) went bellow the '%s' threshold\n, + nv_info(therm, temperature (%u C) went below the '%s' threshold\n, temperature, thresolds[thrs]); else nv_info(therm, temperature (%u C) hit the '%s' threshold\n, @@ -114,8 +114,10 @@ void nouveau_therm_sensor_event(struct nouveau_therm *therm, active = (dir == NOUVEAU_THERM_THRS_RISING); switch (thrs) { case NOUVEAU_THERM_THRS_FANBOOST: - nouveau_therm_fan_set(therm, true, 100); - nouveau_therm_mode(therm, NOUVEAU_THERM_CTRL_AUTO); + if (active) { + nouveau_therm_fan_set(therm, true, 100); + nouveau_therm_mode(therm, NOUVEAU_THERM_CTRL_AUTO); + } break; case NOUVEAU_THERM_THRS_DOWNCLOCK: if (priv-emergency.downclock) @@ -126,7 +128,8 @@ void nouveau_therm_sensor_event(struct nouveau_therm *therm, priv-emergency.pause(therm, active); break; case NOUVEAU_THERM_THRS_SHUTDOWN: - orderly_poweroff(true); + if (active) + orderly_poweroff(true); break; case NOUVEAU_THERM_THRS_NR: break; -- 1.8.1 ___ Nouveau mailing list Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau
[Nouveau] [PATCH 2/3] drm/nv40/therm: reset temperature sensor on init
Current uninitialized sensor detection does not work for me on nv4b and sensor returns crazy values (190°C). It stabilises later, but it's too late - therm code shutdowns the machine... Let's just reset it on init. Signed-off-by: Marcin Slusarz marcin.slus...@gmail.com --- drivers/gpu/drm/nouveau/core/subdev/therm/nv40.c | 12 +++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/core/subdev/therm/nv40.c b/drivers/gpu/drm/nouveau/core/subdev/therm/nv40.c index accc628..7d90844 100644 --- a/drivers/gpu/drm/nouveau/core/subdev/therm/nv40.c +++ b/drivers/gpu/drm/nouveau/core/subdev/therm/nv40.c @@ -173,13 +173,23 @@ nv40_therm_ctor(struct nouveau_object *parent, return nouveau_therm_preinit(priv-base.base); } +int +nv40_therm_init(struct nouveau_object *object) +{ + struct nouveau_therm *therm = (void *)object; + + nv40_sensor_setup(therm); + + return _nouveau_therm_init(object); +} + struct nouveau_oclass nv40_therm_oclass = { .handle = NV_SUBDEV(THERM, 0x40), .ofuncs = (struct nouveau_ofuncs) { .ctor = nv40_therm_ctor, .dtor = _nouveau_therm_dtor, - .init = _nouveau_therm_init, + .init = nv40_therm_init, .fini = _nouveau_therm_fini, }, }; -- 1.8.1 ___ Nouveau mailing list Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau
[Nouveau] [PATCH 3/3] drm/nouveau/therm: use workqueue to shutdown the machine
orderly_poweroff cannot be called from atomic context. Signed-off-by: Marcin Slusarz marcin.slus...@gmail.com --- drivers/gpu/drm/nouveau/core/subdev/therm/temp.c | 18 -- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/nouveau/core/subdev/therm/temp.c b/drivers/gpu/drm/nouveau/core/subdev/therm/temp.c index 8f27b44..b37624a 100644 --- a/drivers/gpu/drm/nouveau/core/subdev/therm/temp.c +++ b/drivers/gpu/drm/nouveau/core/subdev/therm/temp.c @@ -90,6 +90,13 @@ nouveau_therm_sensor_get_threshold_state(struct nouveau_therm *therm, return priv-sensor.alarm_state[thrs]; } +static void +nv_poweroff_work(struct work_struct *work) +{ + orderly_poweroff(true); + kfree(work); +} + void nouveau_therm_sensor_event(struct nouveau_therm *therm, enum nouveau_therm_thrs thrs, enum nouveau_therm_thrs_direction dir) @@ -128,8 +135,15 @@ void nouveau_therm_sensor_event(struct nouveau_therm *therm, priv-emergency.pause(therm, active); break; case NOUVEAU_THERM_THRS_SHUTDOWN: - if (active) - orderly_poweroff(true); + if (active) { + struct work_struct *work; + + work = kmalloc(sizeof(*work), GFP_ATOMIC); + if (work) { + INIT_WORK(work, nv_poweroff_work); + schedule_work(work); + } + } break; case NOUVEAU_THERM_THRS_NR: break; -- 1.8.1 ___ Nouveau mailing list Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau
[Nouveau] [PATCH] nv30/exa: fix shaders on big-endian machines
Direct port of commit d1bc38b6673c54af61196056c489383fba8dced8 nv40/exa: fix shaders on big-endian machines to nv30. Fixes https://bugs.freedesktop.org/show_bug.cgi?id=60050 --- src/nv30_exa.c | 272 - 1 file changed, 136 insertions(+), 136 deletions(-) diff --git a/src/nv30_exa.c b/src/nv30_exa.c index 95509bc..21586e9 100644 --- a/src/nv30_exa.c +++ b/src/nv30_exa.c @@ -820,146 +820,146 @@ NVAccelInitNV30TCL(ScrnInfoPtr pScrn) PUSH_DATA (push, 409616); PUSH_DATAu(push, pNv-scratch, PFP_PASS, 2 * 4); - PUSH_DATA (push, 0x18009e80); /* txph r0, a[tex0], t[0] */ - PUSH_DATA (push, 0x1c9dc801); - PUSH_DATA (push, 0x0001c800); - PUSH_DATA (push, 0x3fe1c800); - PUSH_DATA (push, 0x1802be83); /* txph r1, a[tex1], t[1] */ - PUSH_DATA (push, 0x1c9dc801); /* exit */ - PUSH_DATA (push, 0x0001c800); - PUSH_DATA (push, 0x3fe1c800); + PUSH_DATAs(push, 0x18009e80); /* txph r0, a[tex0], t[0] */ + PUSH_DATAs(push, 0x1c9dc801); + PUSH_DATAs(push, 0x0001c800); + PUSH_DATAs(push, 0x3fe1c800); + PUSH_DATAs(push, 0x1802be83); /* txph r1, a[tex1], t[1] */ + PUSH_DATAs(push, 0x1c9dc801); /* exit */ + PUSH_DATAs(push, 0x0001c800); + PUSH_DATAs(push, 0x3fe1c800); PUSH_DATAu(push, pNv-scratch, PFP_NV12_BILINEAR, 8 * 4); - PUSH_DATA (push, 0x17028200); /* texr r0.x, a[tex0], t[1] */ - PUSH_DATA (push, 0x1c9dc801); - PUSH_DATA (push, 0x0001c800); - PUSH_DATA (push, 0x3fe1c800); - PUSH_DATA (push, 0x04000e02); /* madr r1.xyz, r0.x, imm.x, imm.yzww */ - PUSH_DATA (push, 0x1c9c); - PUSH_DATA (push, 0x0002); - PUSH_DATA (push, 0x0001f202); - PUSH_DATA (push, 0x3f9507c8); /* { 1.16, -0.87, 0.53, -1.08 } */ - PUSH_DATA (push, 0xbf5ee393); - PUSH_DATA (push, 0x3f078fef); - PUSH_DATA (push, 0xbf8a6762); - PUSH_DATA (push, 0x1704ac80); /* texr r0.yz, a[tex1], t[2] */ - PUSH_DATA (push, 0x1c9dc801); - PUSH_DATA (push, 0x0001c800); - PUSH_DATA (push, 0x3fe1c800); - PUSH_DATA (push, 0x04000e02); /* madr r1.xyz, r0.y, imm, r1 */ - PUSH_DATA (push, 0x1c9cab00); - PUSH_DATA (push, 0x0001c802); - PUSH_DATA (push, 0x0001c804); - PUSH_DATA (push, 0x); /* { 0.00, -0.39, 2.02, 0.00 } */ - PUSH_DATA (push, 0xbec890d6); - PUSH_DATA (push, 0x40011687); - PUSH_DATA (push, 0x); - PUSH_DATA (push, 0x04000e81); /* madr r0.xyz, r0.z, imm, r1 */ - PUSH_DATA (push, 0x1c9d5500); - PUSH_DATA (push, 0x0001c802); - PUSH_DATA (push, 0x0001c804); - PUSH_DATA (push, 0x3fcc432d); /* { 1.60, -0.81, 0.00, 0.00 } */ - PUSH_DATA (push, 0xbf501a37); - PUSH_DATA (push, 0x); - PUSH_DATA (push, 0x); + PUSH_DATAs(push, 0x17028200); /* texr r0.x, a[tex0], t[1] */ + PUSH_DATAs(push, 0x1c9dc801); + PUSH_DATAs(push, 0x0001c800); + PUSH_DATAs(push, 0x3fe1c800); + PUSH_DATAs(push, 0x04000e02); /* madr r1.xyz, r0.x, imm.x, imm.yzww */ + PUSH_DATAs(push, 0x1c9c); + PUSH_DATAs(push, 0x0002); + PUSH_DATAs(push, 0x0001f202); + PUSH_DATAs(push, 0x3f9507c8); /* { 1.16, -0.87, 0.53, -1.08 } */ + PUSH_DATAs(push, 0xbf5ee393); + PUSH_DATAs(push, 0x3f078fef); + PUSH_DATAs(push, 0xbf8a6762); + PUSH_DATAs(push, 0x1704ac80); /* texr r0.yz, a[tex1], t[2] */ + PUSH_DATAs(push, 0x1c9dc801); + PUSH_DATAs(push, 0x0001c800); + PUSH_DATAs(push, 0x3fe1c800); + PUSH_DATAs(push, 0x04000e02); /* madr r1.xyz, r0.y, imm, r1 */ + PUSH_DATAs(push, 0x1c9cab00); + PUSH_DATAs(push, 0x0001c802); + PUSH_DATAs(push, 0x0001c804); + PUSH_DATAs(push, 0x); /* { 0.00, -0.39, 2.02, 0.00 } */ + PUSH_DATAs(push, 0xbec890d6); + PUSH_DATAs(push, 0x40011687); + PUSH_DATAs(push, 0x); + PUSH_DATAs(push, 0x04000e81); /* madr r0.xyz, r0.z, imm, r1 */ + PUSH_DATAs(push, 0x1c9d5500); + PUSH_DATAs(push, 0x0001c802); + PUSH_DATAs(push, 0x0001c804); + PUSH_DATAs(push, 0x3fcc432d); /* { 1.60, -0.81, 0.00, 0.00 } */ + PUSH_DATAs(push, 0xbf501a37); + PUSH_DATAs(push, 0x); + PUSH_DATAs(push, 0x); PUSH_DATAu(push, pNv-scratch, PFP_NV12_BICUBIC, 24 * 4); - PUSH_DATA (push, 0x01008604); /* movr r2.xy, a[tex0] */ - PUSH_DATA (push, 0x1c9dc801); - PUSH_DATA (push, 0x0001c800); - PUSH_DATA (push, 0x0001c800); - PUSH_DATA (push, 0x03000600); /* addr r0.xy, r2, imm.x */ - PUSH_DATA (push, 0x1c9dc808); - PUSH_DATA (push, 0x0002); - PUSH_DATA (push, 0x0001c800); - PUSH_DATA (push, 0x3f00); /* { 0.50, 0.00, 0.00, 0.00 } */ - PUSH_DATA (push, 0x); - PUSH_DATA (push, 0x); - PUSH_DATA (push, 0x); -
[Nouveau] [Bug 60007] BUG: nouveau crashes in various ways in 32-bits Fedora 18
https://bugs.freedesktop.org/show_bug.cgi?id=60007 Marcin Slusarz marcin.slus...@gmail.com changed: What|Removed |Added Attachment #74114|text/plain |image/jpeg mime type|| -- You are receiving this mail because: You are the assignee for the bug. ___ Nouveau mailing list Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau
[Nouveau] [Bug 60007] BUG: nouveau crashes in various ways in 32-bits Fedora 18
https://bugs.freedesktop.org/show_bug.cgi?id=60007 --- Comment #15 from Marcin Slusarz marcin.slus...@gmail.com --- This is totally different issue - different card generations (nv4x vs nv5x) and different symptoms (garbage on screen vs kernel crash). The patch I posted pertains only to nv50/kernel crash issue. -- You are receiving this mail because: You are the assignee for the bug. ___ Nouveau mailing list Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau
Re: [Nouveau] [PATCH 2/3] drm/nv40/therm: reset temperature sensor on init
On Sun, Feb 03, 2013 at 09:07:56PM +0100, Marcin Slusarz wrote: Current uninitialized sensor detection does not work for me on nv4b and sensor returns crazy values (190°C). It stabilises later, but it's too late - therm code shutdowns the machine... Let's just reset it on init. Signed-off-by: Marcin Slusarz marcin.slus...@gmail.com --- drivers/gpu/drm/nouveau/core/subdev/therm/nv40.c | 12 +++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/core/subdev/therm/nv40.c b/drivers/gpu/drm/nouveau/core/subdev/therm/nv40.c index accc628..7d90844 100644 --- a/drivers/gpu/drm/nouveau/core/subdev/therm/nv40.c +++ b/drivers/gpu/drm/nouveau/core/subdev/therm/nv40.c @@ -173,13 +173,23 @@ nv40_therm_ctor(struct nouveau_object *parent, return nouveau_therm_preinit(priv-base.base); } +int +nv40_therm_init(struct nouveau_object *object) Tiny issue: this function should be static. +{ + struct nouveau_therm *therm = (void *)object; + + nv40_sensor_setup(therm); + + return _nouveau_therm_init(object); +} + struct nouveau_oclass nv40_therm_oclass = { .handle = NV_SUBDEV(THERM, 0x40), .ofuncs = (struct nouveau_ofuncs) { .ctor = nv40_therm_ctor, .dtor = _nouveau_therm_dtor, - .init = _nouveau_therm_init, + .init = nv40_therm_init, .fini = _nouveau_therm_fini, }, }; -- 1.8.1 ___ Nouveau mailing list Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau
[Nouveau] [Bug 56461] NV11 black screen kernel hang on loading nouveaufb
https://bugs.freedesktop.org/show_bug.cgi?id=56461 --- Comment #42 from Chris Paulson-Ellis ch...@edesix.com --- I found the bug in commit cb75d97e that results in the incorrect GART aperture and fixed it with this patch: --- a/drivers/gpu/drm/nouveau/nouveau_compat.c +++ b/drivers/gpu/drm/nouveau/nouveau_compat.c @@ -17,7 +17,7 @@ nvdrm_gart_init(struct drm_device *dev, u64 *base, u64 *size) struct nouveau_drm *drm = nouveau_newpriv(dev); if (drm-agp.stat == ENABLED) { *base = drm-agp.base; -*size = drm-agp.base; +*size = drm-agp.size; return 0; } return -ENODEV; However, the display still fades to black. I now get an error that I didn't get with the parent commit: PFIFO_DMA_PUSHER - Ch 0 Get 0x0400 Put 0x1088 State 0xc000 (err: MEM_FAULT) Push 0x This message appears at the end of enabling the LDVS output, so it's probably related (I'll attach the console log). I'm not sure how to debug further. I'm wondering in particular how to trace the effect of various changes in commit cb75d97e, such as those made to run_digital_op_script()? Perhaps I need to trace all register read/writes during the devinit phase and compare to the parent commit? How would I do this? -- You are receiving this mail because: You are the assignee for the bug. ___ Nouveau mailing list Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau
[Nouveau] [Bug 56461] NV11 black screen kernel hang on loading nouveaufb
https://bugs.freedesktop.org/show_bug.cgi?id=56461 --- Comment #43 from Chris Paulson-Ellis ch...@edesix.com --- Created attachment 74152 -- https://bugs.freedesktop.org/attachment.cgi?id=74152action=edit console output for fading to black cb75d97e + 3bb076af + 92441b22 + i2c hacks + gart size fix -- You are receiving this mail because: You are the assignee for the bug. ___ Nouveau mailing list Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau
[Nouveau] [Bug 56461] NV11 black screen kernel hang on loading nouveaufb
https://bugs.freedesktop.org/show_bug.cgi?id=56461 --- Comment #44 from Marcin Slusarz marcin.slus...@gmail.com --- You can use mmiotrace to trace all register reads and writes and then parse it with demmio (from envytools) to have names attached to registers. http://nouveau.freedesktop.org/wiki/Development -- You are receiving this mail because: You are the assignee for the bug. ___ Nouveau mailing list Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau
[Nouveau] [Bug 60007] BUG: nouveau crashes in various ways in 32-bits Fedora 18
https://bugs.freedesktop.org/show_bug.cgi?id=60007 --- Comment #16 from Cornel Panceac cpanc...@gmail.com --- still, there is this pattern that i've seen both on fedora 17 (at kernel crash) and on fedora 18, while opening some big jpegs in eye of gnome. this suggests there are some other common issues, not fixed yet. to keep things in sync, after applying your patch, the original fedora 18 system didn't had any video problems at all. thank you. -- You are receiving this mail because: You are the assignee for the bug. ___ Nouveau mailing list Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau
[Nouveau] [Bug 59242] some mesa demos start to segfault after nouveau: improve buffer transfers on nv43
https://bugs.freedesktop.org/show_bug.cgi?id=59242 Andrew Randrianasulu rand...@mail.ru changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #2 from Andrew Randrianasulu rand...@mail.ru --- Probably fixed with mesa update. (currently at Mesa 9.2-devel (git-8a4d952)) -- You are receiving this mail because: You are the assignee for the bug. ___ Nouveau mailing list Nouveau@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/nouveau
[Nouveau] 3.8-rc6: nouveau lockdep recursive lock acquisition
From recent additional locking in nouveau, it looks like we see recursive lock acquisition in 3.8-rc6: nouveau [ DEVICE][:01:00.0] BOOT0 : 0x0e7150a2 nouveau [ DEVICE][:01:00.0] Chipset: GK107 (NVE7) nouveau [ DEVICE][:01:00.0] Family : NVE0 nouveau [ VBIOS][:01:00.0] checking PRAMIN for image... nouveau [ VBIOS][:01:00.0] ... appears to be valid nouveau [ VBIOS][:01:00.0] using image from PRAMIN nouveau [ VBIOS][:01:00.0] BIT signature found nouveau [ VBIOS][:01:00.0] version 80.07.26.04.01 nouveau [ PFB][:01:00.0] RAM type: GDDR5 nouveau [ PFB][:01:00.0] RAM size: 1024 MiB nouveau [ PFB][:01:00.0] ZCOMP: 0 tags init: gdm main process (960) killed by TERM signal vga_switcheroo: enabled [TTM] Zone kernel: Available graphics memory: 4038258 kiB [TTM] Zone dma32: Available graphics memory: 2097152 kiB [TTM] Initializing pool allocator [TTM] Initializing DMA pool allocator nouveau [ DRM] VRAM: 1024 MiB nouveau [ DRM] GART: 512 MiB nouveau [ DRM] BIT BIOS found nouveau [ DRM] Bios version 80.07.26.04 nouveau [ DRM] TMDS table version 2.0 nouveau [ DRM] DCB version 4.0 nouveau [ DRM] DCB outp 00: 048101b6 0f230010 nouveau [ DRM] DCB outp 01: 018212d6 0f220020 nouveau [ DRM] DCB outp 02: 01021212 00020020 nouveau [ DRM] DCB outp 03: 088324c6 0f220010 nouveau [ DRM] DCB outp 04: 08032402 00020010 nouveau [ DRM] DCB outp 05: 02843862 00020010 nouveau [ DRM] DCB conn 00: 00020047 nouveau [ DRM] DCB conn 01: 02208146 nouveau [ DRM] DCB conn 02: 01104246 nouveau [ DRM] DCB conn 03: 00410361 = [ INFO: possible recursive locking detected ] 3.8.0-rc6-ninja+ #1 Not tainted - modprobe/585 is trying to acquire lock: (subdev-mutex){+.+.+.}, at: [a016c323] nouveau_instobj_create_+0x43/0x90 [nouveau] but task is already holding lock: (subdev-mutex){+.+.+.}, at: [a017672d] nv50_disp_data_ctor+0x5d/0xd0 [nouveau] other info that might help us debug this: Possible unsafe locking scenario: CPU0 lock(subdev-mutex); lock(subdev-mutex); *** DEADLOCK *** May be due to missing lock nesting notation 4 locks held by modprobe/585: #0: (__lockdep_no_validate__){..}, at: [813075f3] __driver_attach+0x53/0xb0 #1: (__lockdep_no_validate__){..}, at: [81307601] __driver_attach+0x61/0xb0 #2: (drm_global_mutex){+.+.+.}, at: [812ee59c] drm_get_pci_dev+0xbc/0x2b0 #3: (subdev-mutex){+.+.+.}, at: [a017672d] nv50_disp_data_ctor+0x5d/0xd0 [nouveau] stack backtrace: Pid: 585, comm: modprobe Not tainted 3.8.0-rc6-expert+ #1 Call Trace: [8108fde2] validate_chain.isra.33+0xd72/0x10d0 [8105fa08] ? __kernel_text_address+0x58/0x80 [8100575d] ? print_context_stack+0x5d/0xd0 [81090bc1] __lock_acquire+0x3a1/0xb60 [8108d504] ? __lock_is_held+0x54/0x80 [8109184a] lock_acquire+0x5a/0x70 [a016c323] ? nouveau_instobj_create_+0x43/0x90 [nouveau] [81558739] mutex_lock_nested+0x69/0x340 [a016c323] ? nouveau_instobj_create_+0x43/0x90 [nouveau] [a0152370] ? nouveau_object_create_+0x60/0xa0 [nouveau] [a016c323] nouveau_instobj_create_+0x43/0x90 [nouveau] [a016cf8c] nv50_instobj_ctor+0x4c/0xf0 [nouveau] [a0152163] nouveau_object_ctor+0x33/0xc0 [nouveau] [a016cd51] nv50_instmem_alloc+0x21/0x30 [nouveau] [a0150917] nouveau_gpuobj_create_+0x247/0x2f0 [nouveau] [8155b35a] ? _raw_spin_unlock_irqrestore+0x3a/0x70 [810921fd] ? trace_hardirqs_on_caller+0x10d/0x1a0 [a014f4bc] nouveau_engctx_create_+0x25c/0x2a0 [nouveau] [a0176791] nv50_disp_data_ctor+0xc1/0xd0 [nouveau] [a0153722] ? nouveau_subdev_reset+0x52/0x60 [nouveau] [a0152163] nouveau_object_ctor+0x33/0xc0 [nouveau] [a0152a42] nouveau_object_new+0x112/0x240 [nouveau] [a01f4b1d] nv50_display_create+0x18d/0x860 [nouveau] [8105cb5d] ? __cancel_work_timer+0x6d/0xc0 [a01db8eb] nouveau_display_create+0x3cb/0x670 [nouveau] [a01cb1bf] nouveau_drm_load+0x26f/0x590 [nouveau] [81304c99] ? device_register+0x19/0x20 [812efe91] ? drm_sysfs_device_add+0x81/0xb0 [812ee65e] drm_get_pci_dev+0x17e/0x2b0 [81245e56] ? __pci_set_master+0x26/0x80 [a01cab2a] nouveau_drm_probe+0x25a/0x2a0 [nouveau] [8124a386] local_pci_probe+0x46/0x80 [8124ac11] pci_device_probe+0x101/0x110 [813073d6] driver_probe_device+0x76/0x240 [81307643] __driver_attach+0xa3/0xb0 [813075a0] ? driver_probe_device+0x240/0x240 [8130564d] bus_for_each_dev+0x4d/0x90 [81306f39] driver_attach+0x19/0x20 [81306af0] bus_add_driver+0x1a0/0x270 [a023d000] ? 0xa023cfff [81307cd2] driver_register+0x72/0x170 [a023d000] ? 0xa023cfff