View Single Post
Old 01-13-08, 07:15 AM   #6
Registered User
Join Date: Jan 2008
Posts: 5
Default Re: >=3G installed crashes X server due to simplistic PCI allocation by kernel

You are wrong, I'm afraid.

I _have_ a 64 bit CPU (Core Duo T5600) and I _do_ run a 64 bit Linux (AMD64 gentoo 2.6.23-r5).
Sorry for not having expressed this clearly beforehand.

The issue is not temporary and will not vanish with time. As I described above, the issue is with allocation of PCI device address spaces. It will persist as long as the X server does not cope with true 64 bit addresses.

Again, my BIOS' ACPI information lists a wrong start address for the GeForce. It is B0000000 even though this is mapped to main memory already. It should have been C0000000 or higher. PCI allocation in arch/i386/pci/i386.c detects this and postpones resource allocation for the GeForce Go 7600 until _after_ all other devices had their chance to allocate resources. Unfortunately, when the postponed allocation for the GeForce starts - after all other devices have acquired their address spaces - there is no consecutive chunk of 256M free below 4G any more. So the device gets an address above 4G. This in turn kills the X server.

I have fixed this by manually moving the wrong B0000000 address to C0000000. I understand that this is not a fix of general applicability and I do not propose to fix the kernel in this way for _everyone_. However I wanted to say that it is possible for individuals to fix it this way, and that the information might be worthwhile.

What I _do_ propose is to make PCI resource allocation a bit more clever. Two issues stand out: Postponing failing allocations is bad. Allocating addresses >=4G seems bad with the current state of drivers and software, EVEN THOUGH it is true 64 bit software.

What I also _do_ propose is to harden the nvidia drivers against that issue. It should definitely check for framebuffer addresses >=4G assigned to the nvidia device, give note to the user, and stop the X server startup.
cksony1 is offline   Reply With Quote