Bug 18286

Summary: [nouveau] GeForce 8200 and 8300 not supported (10de:0848/0849/C77/MCP77/MCP78S)
Product: xorg Reporter: Sebastian Brandt <sbrandt>
Component: Driver/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: d13f00l, haiku235, nightmorph, skeggsb, vedran
Version: 7.4 (2008.09)   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
excerpt of Xorg.log with detection/startup messages
none
Xorg.log
none
messages from load drm/nouveau.ko till reboot
none
Xorg log with nouveau git
none
dmesg of system.
none
Xorg.log with accel and drm/nouveau
none
dmesg - removed most of the Stack Trace
none
complete dmesg as gz
none
ROM dump of GeForce 8300 mGPU
none
dmesg from failed nouveau/modeset attempt
none
dmesg and xorg.log with nouveau/modeset
none
dmesg of sucessful modeset
none
Xorg.0.log, nvidia 8200m g
none
nvidia 8200m g bios dump none

Description Sebastian Brandt 2008-10-29 00:32:03 UTC
Created attachment 19924 [details]
excerpt of Xorg.log with detection/startup messages

The GeForce 8300 graphics chip is not supported by the nouveau
driver of the current (7.4) xorg release. 
(Neither by the open source NVidia driver, see bug #18092 and bug #17526)

The 8300 is only available as OEM/on board, e.g., on the ASUS M3N/H-HDMI
mainboard. Called mGPU (Motherboard GPU) now, by NVidia.
lscpi: 02:00.0 VGA compatible controller: nVidia Corporation Device 0848 (rev
a2)
lspci -n: 02:00.0 0300: 10de:0848 (rev a2)
http://pci-ids.ucw.cz/read/PC/10de/0848 

According to
http://en.wikipedia.org/wiki/GeForce_8_Series#Geforce_8300_and_8400, it has a
G86 core. Or maybe not - I think they refer to the 8300 GS.

NVidia proprietary driver supports it, of course (since at least 173.14.05)
(II) NVIDIA(0): NVIDIA GPU GeForce 8300 (C77) at PCI:2:0:0 (GPU-0).

I changed the nv_driver.c to get some information about the architecture, and to try to support it. 

static int NVGetArchitecture(volatile uint32_t *regs) ...
Architecture is detected as 0xAA.

static Bool NVPciProbe
Allowed architecture up to 0xAA (was 0x9F before).

Excerpt from Xorg.log is attached, where libglx.so was still set to closed source nvidia. [SBr] log messages have been added by myself.

After correcting the glx, the X server crashed quite hard. I will do this again and attach the log.
Pls tell me whether you need ReNouveau or MMIO Trace dumps.
Comment 1 Sebastian Brandt 2008-10-29 00:51:26 UTC
Created attachment 19925 [details]
Xorg.log 

Xorg.log ... started X, screen switched and went blank.
Nothing else happened, switching back to console did not work.
Only SysRQ worked (see next attachment)
Comment 2 Sebastian Brandt 2008-10-29 00:57:34 UTC
Created attachment 19926 [details]
messages from load drm/nouveau.ko till reboot

Excerpt of /var/log/messages:
- loading the current git drm.ko and nouveau.ko
- starting X
- SysRQ: show Tasks, shoW blocking tasks
  (no usable information, there, I belive)
- SysRQ: unRaw (did not help)
- SysRQ: S-U-S-B

Initialized drm 1.1.0 20060810
Initialized nouveau 0.0.11 libdrm-2.4.0-12-ge47ab7a5081e178ba on minor 0

By the way ...
System is opensuse 11.0/x86_64/2.6.25.18-0.2-default
Phenom X4 9750 2.4GHz 4GB
ASUS M3N-H/HDMI w/ GeForce 8300 chipset (of course ;-), 256 MB shared mem
Comment 3 Ben Skeggs 2009-02-15 00:51:03 UTC
Any change with latest git?
Comment 4 Sebastian Brandt 2009-03-03 13:28:34 UTC
Sorry, but current git crashes ...
short version below, more info in the attachments.
Took some time to get that far, I still had too many versions of glx, drm, nouveau, etc. lying around ...

[...]
(II) NOUVEAU(0): RandR 1.2 enabled, ignore the following RandR disabled message.
(II) NOUVEAU(0): nv50_crtc_gamma_set is called for CRTC0.
(II) NOUVEAU(0): NV50CrtcGammaSet is called for CRTC0.

Backtrace:
0: X(xf86SigHandler+0x65) [0x47e715]
1: /lib64/libc.so.6 [0x7fe7331666e0]
2: /usr/lib64/xorg/modules//drivers/nouveau_drv.so [0x7fe7302f02a7]
3: X [0x4acdf2]
4: /usr/lib64/xorg/modules//drivers/nouveau_drv.so [0x7fe7302d0613]
5: X [0x485ef2]
6: X [0x486028]
7: X(xf86HandleColormaps+0x281) [0x487021]
8: /usr/lib64/xorg/modules//drivers/nouveau_drv.so [0x7fe7302d00cb]
9: X(AddScreen+0x1c9) [0x4319a9]
10: X(InitOutput+0x241) [0x466f71]
11: X(main+0x286) [0x432146]
12: /lib64/libc.so.6(__libc_start_main+0xe6) [0x7fe733152586]
13: X [0x4316f9]

Fatal server error:
Caught signal 11.  Server aborting

(II) NOUVEAU(0): NVLeaveVT is called.
(II) NOUVEAU(0): NV50DispShutdown is called.
[...]
Comment 5 Sebastian Brandt 2009-03-03 13:34:04 UTC
Created attachment 23484 [details]
Xorg log with nouveau git

ends with segfault.
Interestingly, the drm and nouveau kernel modules are *not* loaded.
They are not loaded automatically, and loading them manually does not change anything.
It seems the driver crashes before needing the kernel modules ...
Comment 6 Sebastian Brandt 2009-03-03 13:35:31 UTC
Created attachment 23485 [details]
dmesg of system. 

drm and nouveau.ko were loaded after X crashed
Comment 7 Maarten Maathuis 2009-03-03 13:51:19 UTC
Please turn "NoAccel" off, retry, and file a seperate bug about "NoAccel" not working. Also some driver symbols would be handy usually, although in this case it's fairly obvious where it's coming from (one of the gamma/lut functions).
Comment 8 Sebastian Brandt 2009-03-03 13:53:58 UTC
You are too fast ... still working on gdb ;-)

Program received signal SIGSEGV, Segmentation fault.
0x00007f5277cdd2a7 in NV50CrtcGammaSet (crtc=0x8020f0, red=0x80efd0,
    green=0x80f1d0, blue=0x80f3d0, size=<value optimized out>)
    at nv50_crtc.c:504
504             memcpy(crtc->lut->map, crtc->lut_values, 4*256*sizeof(uint16_t))
;
(gdb) p crtc
$1 = (nouveauCrtcPtr) 0x8020f0
(gdb) p *crtc
$2 = {scrn = 0x7ffa20, name = 0x0, index = 0 '\0', active = 1,
  front_buffer = 0x809600, fb_pitch = 5632, x = 0, y = 0, lut = 0x809810,
  lut_values = {{red = 0, green = 0, blue = 0, unused = 0}, {red = 64,
      green = 64, blue = 64, unused = 0}, {red = 128, green = 128,
      blue = 128, unused = 0}, {red = 192, green = 192, blue = 192,
      unused = 0}, {red = 256, green = 256, blue = 256, unused = 0}, {
[...]
  SetCursorPosition = 0x7f5277cdd420 <NV50CrtcSetCursorPosition>,
  LoadCursor = 0x7f5277cdd3a0 <NV50CrtcLoadCursor>,
  GammaSet = 0x7f5277cdd1e0 <NV50CrtcGammaSet>, Save = 0, Load = 0}
(gdb)
(gdb)
(gdb) where
#0  0x00007f5277cdd2a7 in NV50CrtcGammaSet (crtc=0x8020f0, red=0x80efd0,
    green=0x80f1d0, blue=0x80f3d0, size=<value optimized out>)
    at nv50_crtc.c:504
#1  0x00000000004acdf2 in ?? ()
#2  0x00007f5277cbd613 in NVLoadPalette (pScrn=0x7ffa20, numColors=256,
    indices=0x81a920, colors=0x81ad30, pVisual=0x0) at nv_driver.c:1924
#3  0x0000000000485ef2 in ?? ()
#4  0x0000000000486028 in ?? ()
#5  0x0000000000487021 in xf86HandleColormaps ()
#6  0x00007f5277cbd0cb in NVScreenInit (scrnIndex=0, pScreen=0x809200,
    argc=<value optimized out>, argv=<value optimized out>)
    at nv_driver.c:2253
#7  0x00000000004319a9 in AddScreen ()
#8  0x0000000000466f71 in InitOutput ()
#9  0x0000000000432146 in main ()
(gdb) l
499             /* This is pre-init, we don't have access to the lut bo now. */
500             if (!crtc->lut)
501                     return;
502
503             nouveau_bo_map(crtc->lut, NOUVEAU_BO_WR);
504             memcpy(crtc->lut->map, crtc->lut_values, 4*256*sizeof(uint16_t))
;
505             nouveau_bo_unmap(crtc->lut);
506     }
507
508     void
(gdb) p crtc->lut
$3 = (struct nouveau_bo *) 0x809810
(gdb) p *crtc->lut
$4 = {device = 0x7f5277ef7db0, handle = 0, size = 4096, map = 0x7f527dc12000,
  tiled = 0, flags = 33, offset = 267517952}
(gdb) p *(crtc->lut)
$5 = {device = 0x7f5277ef7db0, handle = 0, size = 4096, map = 0x7f527dc12000,
  tiled = 0, flags = 33, offset = 267517952}
(gdb) p *(crtc->lut->map)
Attempt to dereference a generic pointer.
(gdb) p crtc->lut->map
$6 = (void *) 0x7f527dc12000
(gdb) p crtc->lut_values
$7 = {{red = 0, green = 0, blue = 0, unused = 0}, {red = 64, green = 64,
    blue = 64, unused = 0}, {red = 128, green = 128, blue = 128, unused = 0},
  {red = 192, green = 192, blue = 192, unused = 0}, {red = 256, green = 256,
    blue = 256, unused = 0}, {red = 320, green = 320, blue = 320,
[...]
(gdb) p crtc->lut->map
$8 = (void *) 0x7f527dc12000
(gdb) p crtc->lut
$9 = (struct nouveau_bo *) 0x809810
(gdb) quit
The program is running.  Quit anyway (and kill it)? (y or n) y
Comment 9 Sebastian Brandt 2009-03-03 14:13:17 UTC
Created attachment 23486 [details]
Xorg.log with accel and drm/nouveau

Another try - this time, with accelaration and correct libglx.
No crash. X starts, but screen stays blank. No reaction to keyboard except SysRQ.
[...]
(II) Mouse[1]: ps2EnableDataReporting: succeeded
Could not init font path element /usr/share/fonts/TTF/, removing from list!
Could not init font path element /usr/share/fonts/OTF, removing from list!

SysRQ StackTrace, show blocked
kill -9 on X via ssh
SysRQ unraw
Keyboard reacts, screen still blank.
Comment 10 Sebastian Brandt 2009-03-03 14:16:46 UTC
Created attachment 23487 [details]
dmesg - removed most of the Stack Trace

[drm] Initialized drm 1.1.0 20060810
ACPI: PCI Interrupt Link [AIGP] enabled at IRQ 20
nouveau 0000:02:00.0: PCI INT A -> Link[AIGP] -> GSI 20 (level, low) -> IRQ 20
nouveau 0000:02:00.0: setting latency timer to 64
[drm] Detected an NV50 generation card (0x0aa400a2)
[drm] Initialized nouveau 0.0.12 libdrm-2.4.5-22-ga6dd0afa87558a670 on minor 0
mtrr: base(0xd8000000) is not aligned on a size(0x10000000) boundary
[drm] Allocating FIFO number 1
[drm] nouveau_fifo_alloc: initialised FIFO 1
[drm] Unhandled PFIFO_INTR - 0x00000010
[drm] Allocating FIFO number 2
[drm] nouveau_fifo_alloc: initialised FIFO 2
## now, X seems to be hanging ...
SysRq : Show State
[...]
X             R  running task        0  4023   3994
 ffff8800c5d9ff70 ffffffff8049b0a9 0000000000000296 ffff8800c5d9ff00
 ffffffff80a27000 ffffffff80a31600 ffffffff80a2e3f0 ffffffff80a31600
 ffffffff80a27000 ffffffff80a31600 ffffffff80a31600 ffffffff80a31600
Call Trace:
 [<ffffffff8020c5a7>] retint_careful+0xd/0x21
 [<00007f0ab955b478>] 0x7f0ab955b478
[...]
## killall -9 X
[drm] nouveau_fifo_free: freeing fifo 2
[drm:nouveau_fifo_free] *ERROR* Failed to idle channel 2 before destroy.Prepare for strangeness..
[drm] nouveau_fifo_free: freeing fifo 1
Comment 11 Sebastian Brandt 2009-03-03 14:17:07 UTC
Created attachment 23488 [details]
complete dmesg as gz
Comment 12 Vedran Miletić 2009-06-05 09:50:14 UTC
Is there any chance to get this working if NVIDIA *doesn't* add support for these chips into nv?
Comment 13 Maarten Maathuis 2009-06-05 10:07:37 UTC
There is always a chance, in practice it will involve someone with sufficient motivation, some experience and access to 8200/8300/9400(onboard version)/G200 hardware. The whole NVA0 series is still problematic.
Comment 14 Ben Skeggs 2009-06-29 00:07:17 UTC
Can you follow the instructions at
http://nouveau.freedesktop.org/wiki/InstallDRM to install the latest DRM
(though, make sure you build the "master" branch and not "newttm-devel" as
instructed there).

When you load the nouveau module, ensure you enable KMS by "modprobe nouveau
modeset=1".  There's some changes recently which may help with this chipset.

If you have any troubles, please stop by #nouveau on freenode!
Comment 15 Sebastian Brandt 2009-07-01 01:08:04 UTC
Created attachment 27287 [details]
ROM dump of GeForce 8300 mGPU

sudo ./vbtracetool -w 2> GF8300.rom
Using card 10de:0848 on 0200
Nvidia card -- using PROM/PRAMIN BIOS
Using card memory region at 0xfb000000
Attempting to locate BIOS image in PROM... BIOS signature not found
Attempting to locate BIOS image in PRAMIN... appears to be valid
Comment 16 Sebastian Brandt 2009-07-01 03:06:50 UTC
I was unable to attach the mmiotrace (3.8>1MB) - you can find it on 
http://dbis.rwth-aachen.de/~brandt/nouveau/10de-0848-GeForce8300-mmiotrace.tar.gz

mmiotrace for GeForce 8300.
Created on kernel 2.6.27.23-0.1 x64 SMP (opensuse 11.1 default, but recompiled with active MMIOTRACE), single cpu only.
contains mmiotrace itself, dmesg, lspci, commands to create it, and output of X11.
trace_entries had to be raised to 520000.
Strangely, only one trace run could be done per system boot ... any subsequent trace runs resulted in the "cat" process exiting ($?=0) after nvidia.ko load.
Comment 17 Sebastian Brandt 2009-07-04 07:16:15 UTC
Created attachment 27380 [details]
dmesg from failed nouveau/modeset attempt

Got the current version of the nouveau kernel, compiled and installed it.
opensuse 11.1 has a .27 kernel, so, no way of adding the KMS drm stuff there.
used 2.6.31-rc1-0.1 nouveau x64
compiled and installed git drm and nouveau driver.

When booting with vesa fb, loading the nouveau modules with modeset=1 resulted in a hung console.
When booting w/o framebuffer, loading the nouveau modules with modeset=1 resulted in a modeswitch, and the TFT going into powersave mode (HDMI->DVI->TFT)
Starting X11 did not work, neither with modeset=1 nor =0.
[I need to repeat the Xorg test with non-nvidia glx driver.]

excerpt from dmesg:
[drm] Initialized drm 1.1.0 20060810
ACPI: PCI Interrupt Link [AIGP] enabled at IRQ 20
nouveau 0000:02:00.0: PCI INT A -> Link[AIGP] -> GSI 20 (level, low) -> IRQ 20
nouveau 0000:02:00.0: setting latency timer to 64
nouveau 0000:02:00.0: Detected an NV50 generation card (0x0aa400a2)
[TTM] TTM available graphics memory: 1539 MiB
[TTM] TTM available object memory: 1539 MiB
nouveau 0000:02:00.0: Allocating FIFO number 1
nouveau 0000:02:00.0: nouveau_fifo_alloc: initialised FIFO 1
nouveau 0000:02:00.0: Attempting to load BIOS image from PRAMIN
nouveau 0000:02:00.0: ... appears to be valid
nouveau 0000:02:00.0: BIT BIOS found
nouveau 0000:02:00.0: Bios version 62.77.1e.00
nouveau 0000:02:00.0: TMDS table revision 2.0 not currently supported
nouveau 0000:02:00.0: Found Display Configuration Block version 4.0
nouveau 0000:02:00.0: Raw DCB entry 0: 01000300 0000001e
nouveau 0000:02:00.0: Raw DCB entry 1: 01011332 00020010
nouveau 0000:02:00.0: Raw DCB entry 2: 0000000e 00000000
nouveau 0000:02:00.0: Parsing VBIOS init table 0 at offset 0xC672
nouveau 0000:02:00.0: ========== unknown reg 0x002FF0A8 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x002FF0A8 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x00021220 ==========
nouveau 0000:02:00.0: Could not find a compatible set of PLL values
nouveau 0000:02:00.0: Parsing VBIOS init table 1 at offset 0xC956
nouveau 0000:02:00.0: Parsing VBIOS init table 2 at offset 0xC958
nouveau 0000:02:00.0: Parsing VBIOS init table 3 at offset 0xCA3D
nouveau 0000:02:00.0: ========== unknown reg 0x00020010 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x0002000C ==========
nouveau 0000:02:00.0: ========== unknown reg 0x0002000C ==========
nouveau 0000:02:00.0: Parsing VBIOS init table 4 at offset 0xCB02
nouveau 0000:02:00.0: Detected a DAC output
nouveau 0000:02:00.0: Detected a TMDS output
nouveau 0000:02:00.0: Detected a VGA connector
nouveau-0000:02:00.0-VGA-1: Test OK
nouveau 0000:02:00.0: Detected a DVI-D connector
nouveau-0000:02:00.0-DVI-D-1: Test OK
allocated 1400x1050 fb: 0x40220000, bo ffff8800c10cbe00
Console: switching to colour frame buffer device 175x65
[drm] TMDS-8: set mode 1400x1050 1f
nouveau 0000:02:00.0: 0xB5A0: parsing output script 1
nouveau 0000:02:00.0: 0xB5A1: parsing output script 2
nouveau 0000:02:00.0: 0xB375: parsing clock script 0
nouveau 0000:02:00.0: 0xB38F: Init table command not found: 0x96
nouveau 0000:02:00.0: 0xACAA: parsing clock script 1
nouveau 0000:02:00.0: GPU lockup - switching to software fbcon
fb0: nouveaufb frame buffer device
registered panic notifier
[drm] Initialized nouveau 0.0.14 20090420 for 0000:02:00.0 on minor 0

** Information lost here, as next line repeated >30k times **
nouveau 0000:02:00.0: Unhandled PFIFO_INTR - 0x00000010
Comment 18 Sebastian Brandt 2009-07-04 07:32:56 UTC
Created attachment 27381 [details]
dmesg and xorg.log with nouveau/modeset

- modprobe nouveau modeset=1
- X -logverbose 9 -config xorg-nouveau.conf
with xorg glx.

end of xorg-log:
(EE) NOUVEAU(0): Failed to allocate framebuffer memory

Fatal server error:
AddScreen/ScreenInit failed for driver 0

dmesg repeats forever:
nouveau 0000:02:00.0: Unhandled PFIFO_INTR - 0x00000010
Comment 19 Ben Skeggs 2009-07-07 04:37:09 UTC
I implemented the missing handler for opcode 0x96 in a script we run to setup your outputs, hopefully you'll have more luck getting a display up and running if you update your drm.  If not, can you please repost your kernel log with nouveau.modeset=1 and drm.debug=1.

Once we have a display up and running for the console we'll worry about getting X up :)
Comment 20 Sebastian Brandt 2009-07-07 12:29:32 UTC
Created attachment 27476 [details]
dmesg of sucessful modeset

GREAT - modeset works! 
Log messages:

[drm] Initialized drm 1.1.0 20060810
ACPI: PCI Interrupt Link [AIGP] enabled at IRQ 20
nouveau 0000:02:00.0: PCI INT A -> Link[AIGP] -> GSI 20 (level, low) -> IRQ 20
nouveau 0000:02:00.0: setting latency timer to 64
nouveau 0000:02:00.0: Detected an NV50 generation card (0x0aa400a2)
[TTM] TTM available graphics memory: 1539 MiB
[TTM] TTM available object memory: 1539 MiB
nouveau 0000:02:00.0: Allocating FIFO number 1
nouveau 0000:02:00.0: nouveau_fifo_alloc: initialised FIFO 1
nouveau 0000:02:00.0: Attempting to load BIOS image from PRAMIN
nouveau 0000:02:00.0: ... appears to be valid
nouveau 0000:02:00.0: BIT BIOS found
nouveau 0000:02:00.0: Bios version 62.77.1e.00
nouveau 0000:02:00.0: TMDS table revision 2.0 not currently supported
nouveau 0000:02:00.0: Found Display Configuration Block version 4.0
nouveau 0000:02:00.0: Raw DCB entry 0: 01000300 0000001e
nouveau 0000:02:00.0: Raw DCB entry 1: 01011332 00020010
nouveau 0000:02:00.0: Raw DCB entry 2: 0000000e 00000000
nouveau 0000:02:00.0: Parsing VBIOS init table 0 at offset 0xC672
nouveau 0000:02:00.0: ========== unknown reg 0x002FF0A8 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x002FF0A8 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x00021220 ==========
nouveau 0000:02:00.0: Could not find a compatible set of PLL values
nouveau 0000:02:00.0: Parsing VBIOS init table 1 at offset 0xC956
nouveau 0000:02:00.0: Parsing VBIOS init table 2 at offset 0xC958
nouveau 0000:02:00.0: Parsing VBIOS init table 3 at offset 0xCA3D
nouveau 0000:02:00.0: ========== unknown reg 0x00020010 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x0002000C ==========
nouveau 0000:02:00.0: ========== unknown reg 0x0002000C ==========
nouveau 0000:02:00.0: Parsing VBIOS init table 4 at offset 0xCB02
nouveau 0000:02:00.0: Detected a DAC output
nouveau 0000:02:00.0: Detected a TMDS output
nouveau 0000:02:00.0: Detected a VGA connector
nouveau-0000:02:00.0-VGA-1: Test OK
nouveau 0000:02:00.0: Detected a DVI-D connector
nouveau-0000:02:00.0-DVI-D-1: Test OK
allocated 1400x1050 fb: 0x40220000, bo ffff880037c77000
Console: switching to colour frame buffer device 175x65
[drm] TMDS-8: set mode 1400x1050 1f
nouveau 0000:02:00.0: 0xB5A0: parsing output script 1
nouveau 0000:02:00.0: 0xB5A1: parsing output script 2
nouveau 0000:02:00.0: 0xB375: parsing clock script 0
nouveau 0000:02:00.0: ========== unknown reg 0x00021028 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x00021028 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x00021028 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x00021028 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x00021028 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x00021028 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x00021028 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x00021028 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x00021028 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x00021028 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x00021028 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x00021028 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x00021028 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x00021028 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x00021028 ==========
nouveau 0000:02:00.0: ========== unknown reg 0x00021028 ==========
nouveau 0000:02:00.0: 0xACAA: parsing clock script 1
nouveau 0000:02:00.0: GPU lockup - switching to software fbcon
fb0: nouveaufb frame buffer device
registered panic notifier
[drm] Initialized nouveau 0.0.14 20090420 for 0000:02:00.0 on minor 0

Xorg still fails ;-)
dmesg:
nouveau 0000:02:00.0: Unhandled PFIFO_INTR - 0x00000010
* repeatet an awful lot of times *
nouveau 0000:02:00.0: Unhandled PFIFO_INTR - 0x00000010
[TTM]Failed moving buffer. Proposed placement 0x00070004
[TTM]Out of aperture space or DRM memory quota.

Xorg-log:
(EE) NOUVEAU(0): Failed to allocate framebuffer memory
Comment 21 Vedran Miletić 2009-09-05 15:51:58 UTC
*** Bug 18092 has been marked as a duplicate of this bug. ***
Comment 22 Vedran Miletić 2009-09-05 15:52:20 UTC
*** Bug 17526 has been marked as a duplicate of this bug. ***
Comment 23 Vedran Miletić 2009-09-05 15:53:16 UTC
*** Bug 20962 has been marked as a duplicate of this bug. ***
Comment 24 Vedran Miletić 2009-09-05 15:56:21 UTC
Can we do any more testing to help developers resolve this?
Comment 25 Chí-Thanh Christopher Nguyễn 2009-09-05 15:58:50 UTC
I think bug 17526 and bug 18092 are not duplicates of this bug. They are filed against the xf86-video-nv driver and not nouveau.
Comment 26 Vedran Miletić 2009-09-05 16:11:15 UTC
Oops, my bad. Fixing that.
Comment 27 Josh Saddler 2009-12-01 10:53:30 UTC
I have a motherboard with a built-in 8200 chip, MCP78S. What output do you need for this bug, so's it can be properly supported in Nouveau? Right now even the binary nVidia driver doesn't work with it. Terrible performance; can't even move the mouse around. I'd love to help this bug out and get my chip supported.
Comment 28 Maarten Maathuis 2009-12-01 11:20:37 UTC
Can someone actually confirm it doesn't work with the current version (with KMS enabled)?
Comment 29 Stanislav K. 2010-01-16 21:03:39 UTC
Created attachment 32668 [details]
Xorg.0.log, nvidia 8200m g
Comment 30 Stanislav K. 2010-01-16 21:04:42 UTC
Created attachment 32669 [details]
nvidia 8200m g bios dump
Comment 31 Stanislav K. 2010-01-16 21:06:18 UTC
I confirm that it doesn't work well on GeForce 8200M, even if kms is not enabled.
If kms enabled it sets native screen resolution, xorg runs, but very slowly and 2d acceleration doesn't work.

02:00.0 VGA compatible controller: nVidia Corporation C77 [GeForce 8200M G] (rev a2)

Here is the dmesg with modeset=1:
[drm] Initialized drm 1.1.0 20060810
ACPI: PCI Interrupt Link [LGPU] enabled at IRQ 21
nouveau 0000:02:00.0: PCI INT A -> Link[LGPU] -> GSI 21 (level, low) -> IRQ 21
nouveau 0000:02:00.0: setting latency timer to 64
[drm] nouveau 0000:02:00.0: failed to evaluate _DSM: 5
[drm] nouveau 0000:02:00.0: Detected an NV50 generation card (0x0aa280a2)
[drm] nouveau 0000:02:00.0: Attempting to load BIOS image from PRAMIN
[drm] nouveau 0000:02:00.0: ... appears to be valid
[drm] nouveau 0000:02:00.0: BIT BIOS found
[drm] nouveau 0000:02:00.0: Bios version 62.77.2f.00
[drm] nouveau 0000:02:00.0: TMDS table revision 2.0 not currently supported
[drm] nouveau 0000:02:00.0: Found Display Configuration Block version 4.0
[drm] nouveau 0000:02:00.0: DCB connector table: VHER 0x40 5 16 4
[drm] nouveau 0000:02:00.0:   0: 0x00000040: type 0x40 idx 0 tag 0xff
[drm] nouveau 0000:02:00.0:   1: 0x00000100: type 0x00 idx 1 tag 0xff
[drm] nouveau 0000:02:00.0:   2: 0x00001261: type 0x61 idx 2 tag 0x07
[drm] nouveau 0000:02:00.0: Raw DCB entry 0: 01000323 00010034
[drm] nouveau 0000:02:00.0: Raw DCB entry 1: 02011300 0000001e
[drm] nouveau 0000:02:00.0: Raw DCB entry 2: 02022332 00020010
[drm] nouveau 0000:02:00.0: Raw DCB entry 3: 0000000e 00000000
[drm] nouveau 0000:02:00.0: Parsing VBIOS init table 0 at offset 0xD5C5
[drm] nouveau 0000:02:00.0: Parsing VBIOS init table 1 at offset 0xD824
[drm] nouveau 0000:02:00.0: Parsing VBIOS init table 2 at offset 0xD826
[drm] nouveau 0000:02:00.0: Parsing VBIOS init table 3 at offset 0xD90B
[drm] nouveau 0000:02:00.0: Parsing VBIOS init table 4 at offset 0xDA5A
[drm] nouveau 0000:02:00.0: Parsing VBIOS init table at offset 0xDABF
[drm] nouveau 0000:02:00.0: 0xDABF: Condition still not met after 20ms, skipping following opcodes
[drm] nouveau 0000:02:00.0: 0xC1D2: parsing output script 0
[drm] nouveau 0000:02:00.0: 0xC38E: parsing output script 0
[TTM] Zone  kernel: Available graphics memory: 898512 kiB.
[drm] nouveau 0000:02:00.0: 256 MiB VRAM
[drm] nouveau 0000:02:00.0: 512 MiB GART (aperture)
nouveau 0000:02:00.0: firmware: requesting nouveau/nvaa.ctxprog
nouveau 0000:02:00.0: firmware: requesting nouveau/nvaa.ctxvals
[drm] nouveau 0000:02:00.0: Allocating FIFO number 1
[drm] nouveau 0000:02:00.0: nouveau_channel_alloc: initialised FIFO 1
[drm] nouveau 0000:02:00.0: Detected a LVDS output
[drm] nouveau 0000:02:00.0: Detected a DAC output
[drm] nouveau 0000:02:00.0: Detected a TMDS output
[drm] nouveau 0000:02:00.0: Detected a LVDS connector
[drm] nouveau 0000:02:00.0: Detected a VGA connector
[drm] nouveau 0000:02:00.0: Detected a DVI-D connector
[drm] nouveau 0000:02:00.0: allocated 1366x768 fb: 0x40210000, bo ffff880068c85e00
Console: switching to colour frame buffer device 170x48
fb0: nouveaufb frame buffer device
registered panic notifier
[drm] Initialized nouveau 0.0.15 20090420 for 0000:02:00.0 on minor 0
[drm] nouveau 0000:02:00.0: Allocating FIFO number 2
[drm] nouveau 0000:02:00.0: nouveau_channel_alloc: initialised FIFO 2
[drm] nouveau 0000:02:00.0: nouveau_channel_free: freeing fifo 2
[drm] LVDS-7: set mode 1366x768 1a
[drm] nouveau 0000:02:00.0: 0xC1D6: parsing output script 1
[drm] nouveau 0000:02:00.0: 0xC045: parsing clock script 0
[drm] nouveau 0000:02:00.0: 0xC1CD: parsing clock script 1

When kms is not enabled, xorg just hangs computer and sysrq keys doesn't work, so i can't attach log.
nouveau-drm version in my distro is 0.0.15_20091220.
Comment 32 Josh Saddler 2010-02-15 02:00:20 UTC
(In reply to comment #28)
> Can someone actually confirm it doesn't work with the current version (with KMS
> enabled)?

It kinda works on my GeForce 8200. And it's kinda broken.

While KMS works perfectly, from the console to logging into my Xfce desktop, performance is pretty bad. Nowhere *near* as bad as the proprietary driver is, but it's still definitely stuttering and slow in places while just doing 2D desktop work. I haven't tried 3D games yet.

I checked my Xorg logs, and this is what I see:

(EE) NOUVEAU(0): Error creating GPU channel: -16
(EE) NOUVEAU(0): Error initialising acceleration.  Falling back to NoAccel
(==) NOUVEAU(0): Backing store disabled
(==) NOUVEAU(0): Silken mouse enabled
(II) NOUVEAU(0): NVEnterVT is called.
(**) NOUVEAU(0): DPMS enabled
(II) AIGLX: Screen 0 is not DRI2 capable
(II) AIGLX: Screen 0 is not DRI capable
(II) AIGLX: Loaded and initialized /usr/lib64/dri/swrast_dri.so
(II) GLX: Initialized DRISWRAST GL provider for screen 0

By far it looks like the biggest errors are in the EE lines, where it says it's falling back to NoAccel. How can I fix that?

The other big problem is where it disables the backing store. Probably not good for performance. And lastly, it tells me it's not capable of DRI/DRI2, even though those are both installed and working correctly for my other (ATI) card.

I'm using:

kernel 2.6.33-rc7 (vanilla, straight from upstream)
mesa git (today's checkout)
libdrm git (today's checkout)
xorg-server 1.7.99.2
dri2proto 2.2
xf86-video-nouveau 0.0.15_pre20100213
nouveau-firmware 20091212


I will say that there is no documentation at all for which specific nVidia GPU family my chipset belongs to -- only that it's "at least" nv50. The 8200 is just a downclocked 8300, and the interwebs indicate that the 8300 (GS) is an nv86 chip. So that's what I put in my kernel for the extra firmware: nv86.ctxprog/ctxvals. Maybe this is screwing things up?

If I should actually be using the nv50 firmware, then lemme know -- I can recompile. I just thought that it was for the old 8800 cards.
Comment 33 Maarten Maathuis 2010-02-15 02:05:43 UTC
Both the 8200 and 8300 are NVAA chips, they are not NV86. As far as i know darktama is aware of what is causing the problem, but he hasn't gotten around to implementing it for nouveau. DRI2 doesn't work, because acceleration isn't working.
Comment 34 Xavier 2010-02-15 02:14:29 UTC
(In reply to comment #32)
> 
> I will say that there is no documentation at all for which specific nVidia GPU
> family my chipset belongs to -- only that it's "at least" nv50. The 8200 is
> just a downclocked 8300, and the interwebs indicate that the 8300 (GS) is an
> nv86 chip. So that's what I put in my kernel for the extra firmware:
> nv86.ctxprog/ctxvals. Maybe this is screwing things up?
> 

Just look at Stanislav last dmesg :
[drm] nouveau 0000:02:00.0: Detected an NV50 generation card (0x0aa280a2)
[drm] nouveau 0000:02:00.0: Attempting to load BIOS image from PRAMIN
...
[drm] nouveau 0000:02:00.0: 256 MiB VRAM
[drm] nouveau 0000:02:00.0: 512 MiB GART (aperture)
nouveau 0000:02:00.0: firmware: requesting nouveau/nvaa.ctxprog
nouveau 0000:02:00.0: firmware: requesting nouveau/nvaa.ctxvals

You can see its a nvaa card (0x0aa...) and that the two nvaa firmwares are correctly loaded. So that's not the problem.
The problem is indeed the EE in xorg log :
(EE) NOUVEAU(0): Error creating GPU channel: -16
(EE) NOUVEAU(0): Error initialising acceleration.  Falling back to NoAccel
Comment 35 Ben Skeggs 2010-02-21 21:19:12 UTC
There's a possibility NVAA is now fixed in current nouveau git.
Comment 36 Josh Saddler 2010-03-21 16:15:04 UTC
(In reply to comment #35)
> There's a possibility NVAA is now fixed in current nouveau git.

I think it is. I'm doing things on my Geforce 8200 I could never do before.

While I *very occasionally* see graphical corruption when rolling over Xfce startmenus, or the "File Edit View Help" bars in application windows, accel seems to be working okay.

$ glxinfo

direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
OpenGL vendor string: nouveau
OpenGL renderer string: Gallium 0.4 on NVAA
OpenGL version string: 2.1 Mesa 7.9-devel
OpenGL shading language version string: 1.20

This is with kernel 2.6.34_rc2, 1-hour-old checkouts of Mesa/libdrm/xf86-video-nouveau, and nouveau-firmware-20091212. Mesa is built with gallium3d, since apparently that's required for nouveau these days. I dunno if there are any other software versions or xorg.conf settings that would be better, but the above stack is what works for me. Nice'n'stable; no lockups.

No, I can't run ioQuake3-based games like Urban Terror at native 1440x900 with all settings maxed (the way I can with my RadeonHD 4550 and xf86-video-ati), but it is kinda playable. That's big progress.

So whatever ya'll have done in the last month, keep it up -- it's yielding amazing results. Thanks a bunch!
Comment 37 Xavier 2010-03-21 16:34:36 UTC
Just FYI, you no longer need firmware on 34, it was only needed for 33.
Thanks to... Marcin ! :)
http://cgit.freedesktop.org/nouveau/linux-2.6/commit/?id=266229a5779459314e2fda4281199fb1f308d668

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.