- boot system without framebuffer
- remove every mtrr entry with "echo disable ...."
- start x-server with "X" or "startx" witch takes hours
If this works your mainboard has the mtrr issue.
I've tried this, and after a looot of time X server has been able to launch, but many processes have failed (such as kicker or kdesktop).
At startx's output i've seen a pair of messages:
- FATAL: could not open /lib/modules/2.6.24-17-generic/volatile/fglrx.ko: no such file or directory. Kernel was updated a few days ago and i've not reinstalled the driver, so i think this makes sense.
- fglrx(0): firegl_SetSuspendResumeState FAILED -1003. (i don't know xD)
Some messages at Xorg.log:
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is -1, (No such device or address)
drmOpenDevice: open result is -1, (No such device or address)
drmOpenDevice: Open failed
(WW) fglrx(0): Failed to open DRM connection
(II) fglrx(0): [FB] Find the MC FB aperturs range(MCFBBase = 0xc0000000, MCFBSize = 0x20000000)
(--) fglrx(0): VideoRAM: 262144 kByte, Type: DDR4
(II) fglrx(0): PCIE card detected
... (hmm 256 MB again??)
(**) fglrx(0): ATI GART size: 255 MB
(WW) fglrx(0): No DRM connection for driver fglrx.
(II) fglrx(0): [drm] DRM buffer queue setup: nbufs = 100 bufsize = 65536
(II) fglrx(0): driver needs X.org 7.1.x.y with x.y >= 0.0
(II) fglrx(0): detected X.org 22.214.171.124
(EE) fglrx(0): atiddxDriScreenInit failed, GPS not been initialized.
(WW) fglrx(0): ***********************************************
(WW) fglrx(0): * DRI initialization failed! *
(WW) fglrx(0): * (maybe driver kernel module missing or bad) *
(WW) fglrx(0): * 2D acceleraton available (MMIO) *
(WW) fglrx(0): * no 3D acceleration available *
(WW) fglrx(0): ********************************************* *
(WW) fglrx(0): Textured Video not supported without DRI enabled.
(WW) fglrx(0): Video Overlay not supported on AVIVO based graphics cards. For XVideo support use Option "TexturedVideo".
So, what can i do? 256 MB card?? probably MTRR issue here, with gigabyte x48-dq6 (bios F6)? what config values must be used for it? (considering that i don't know the meaning of some entries at my /proc/mtrr file)
Here we can see the contents of /proc/mtrr on a computer that is EXACTLY the same as mine, but having ubuntu 8.04 x86_64 (gnome instead of kde) and with a nvidia card 8800gt w 512 mb of RAM (his installation has no known problems related to the card or the nvidia driver, even having also the same bios version, that is, F6):
The ram that appears looks fine, so probably nvidia somehow ignores the info from lspci, because at mtrr it's defining a 1 GB range, while the card has only 512 mb (maybe it's reserving extra directions for some ports).
Anyway, it's working, and seems to use all the card's memory.
Hmm in my config you can see overlapping ranges, while at the one you provide it doesn't happen. What's the meaning of this?
All ranges should sum at least 8 GB?
Why there's no range at base=0xd0000000 of at least 512 MB of the card's ram?
How did you get those values for every range length?
Why are you adding 8 entries instead of the original 7?
I'm sorry, but i don't get the key. I believe every entry is representing an address
range for a "device". 2 ranges of 4 GB may be for system's RAM, 512 MB for vga RAM,
and i don't know who is putting there the other entries. Is this only used for
system RAM and vga RAM? or info of other devices also appears at this file?
The X server starts, but for some time i can see a few fuzzy boxes..
After some time a rectangle of close to 40 pixels having all the width
of the screen at the bottom of the screen can be shown. This area seems
to be bad repainted, and almost every time is showing garbage.
Besides the computer freezes when going to reboot, and i haven't found
any "important" warning message at Xorg.log.
X server starts, but as previously i have a 40 pixels height rectangle that doesn't update fine at the bottom of the screen
What do you think? it seems the last part of the vga ram is not being updated as it should, or "someone" is writing there (i don't think that's it).
In the meantime i believe MTRR indicates the CPU not only th caching strategy, but also the virtual address range for each region. So the idea is to reserve a hole for I/O direct device mapping, that also includes the screen ram mapping. The bigger of your card's ram the bigger the hole you need, so in this config i'm reserving a full gb hole, which should be big enough for all the card memory and every direct I/O mapping of my computer. If that's true the sum of the ranges sizes must match the amount of your system ram. According to this config i'm scrolling the 5 top gbs of system ram from 3 gb offset to 4 gb offset in order to get the 1 gb hole. It that's true you could even take those 5 gbs to an offset bigger than 4 gb (maybe 8 gb if you prefer).
You might want to now try the 8-4 driver. There seems to some corruption issues with 8-5 that weren't there before.
Can someone please help me with this mtrr stuff? I can't for the life of me figure where you guys are getting the values for these ranges. I have 4GB of memory and 512MB on my video card, by default my mtrr looks like this:
I can disable reg02 and reg01, but if I try to disable reg00 my computer locks up. That's in single user mode with no framebuffer. I figured I would try to work with it so I created a new reg01 of 2048MB, like so:
I then decided it was time to try plugging in my HD3650 again. Instead of a big lockup when logging out, I got what seems to be the same black screen on X startup as Mamonetti, with a flashing cursor in the top left corner. VT-switching doesn't work, but at least the Magic Sys Request key does. I rebooted into single user mode again, and added a register of 512MB for the video card and continued the boot process. I got the same blank screen as before. This is the command I used for reg02:
It looked correct afterward when I ran 'cat /proc/mtrr' (reg02 had a base@4096MB and was 512MB), but then I only just barely understand this thing. In the end it made no difference and I still got the same black screen instead of KDM. I wanted to try sticking the 512MB register in between the two 2048MB registers, but since I needed to login to X to find out the hexadecimal translation of 2560(x1024x1024), I just plugged in my 8600GT again (sigh) and hoped posting here would prove more fruitful than my thusfar useless attempts to figure this out.
My 8600GT doesn't seem to care either way, it's always ran pretty swimmingly with the default mtrr at the top, and it seems to be doing the same right now with the dual 2048MB register mtrr too.
-Where do I get the correct base/size numbers appropriate for my system?
-Can lspci or hwinfo tell me this stuff?
-Why can't I remove reg00 without my system locking?
-Should I not remove any registers and instead just add(to the default mtrr at the top) another 256MB register and 2 512MB registers (one for the remaining 512MB of my RAM and the other for the video card)??
-Should all the registers be write-back only?
-How do I know when it's correct? - is there a way to know without swapping out my video card first?
Last edited by oblivious_maximus; 06-01-2008 at 08:30 PM.
Well it's not like I want to be fiddling with it. Without fiddling(while using my ATI card), I can't log out without a massive lockup. With the fiddling I detailed above, I can't even log in(again, while using my ATI card). Seems like a decent indicator that if I can get a less-completely-incorrect mtrr going, I might be able to login AND logout without issue when using my ATI card.
If Asus hadn't decided to remove the memore hole remapping option from the BIOS of my motherboard, I'd certainly prefer tweaking that option instead... but in their infinite wisdom about what people don't need, they removed it.
edit: Asus has Linux tech support department! Unfortunately they're not very helpful.
Last edited by oblivious_maximus; 06-02-2008 at 12:42 PM.