I've a PowerMac G5 here on which the openSUSE 11.1 Xorg dislikes your
d3a54014e2a94bd37b7dee5e76e03f7bc4fab49a PCI: Add legacy_io/mem to all busses
startx fails with xf86MapDomainMem(): mmap() failure,
the relevant lines from an strace being:
open("/sys/class/pci_bus/0000:0a/legacy_mem", O_RDWR) = 6
mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_SHARED, 6, 0xa0000) =
-1 ENXIO (No such device or address)
Whereas if I back out your pci_create_legacy_files(),
it'll happily mmap /dev/mem instead and work with that.
The ENXIO comes from arch/powerpc/kernel/pci-common.c:
pci_mmap_legacy_page_range() finds hose->isa_mem_size 0.
That's as far as I took it: I can see there's code to set up
"Legacy VGA memory" but it looks like that's not coming into play.
dmesg and .config attached: I think you'll get to the point much
quicker than I would.
Though I bet you're busy at the moment: no hurry, I can comment
out the pci_create_legacy_files() from drivers/pci/bus.c for now.
Hugh
> That's as far as I took it: I can see there's code to set up
> "Legacy VGA memory" but it looks like that's not coming into play.
> dmesg and .config attached: I think you'll get to the point much
> quicker than I would.
>
> Though I bet you're busy at the moment: no hurry, I can comment
> out the pci_create_legacy_files() from drivers/pci/bus.c for now.
It's actually an X bug :-(
IE, I always create the legacy files, I just make mmap fail when legacy
VGA isn't available. This is the right way to do it, as it properly
informs X that yes, I do support the new API and no, there's no point in
trying to access legacy VGA memory on this machine.
I honestly don't see how I can fix that without making proper support
for legacy memory / IO impossible, and thus guaranteeing that X will
eternally continue to crap on random bits of /dev/mem in the future :-(
Cheers,
Ben.