Messages in this thread | | | Date | Thu, 19 Oct 2006 16:17:49 -0700 (PDT) | Subject | Re: pci_fixup_video change blows up on sparc64 | From | David Miller <> |
| |
From: Jesse Barnes <jesse.barnes@intel.com> Date: Thu, 19 Oct 2006 15:58:05 -0700
> On Thursday, October 19, 2006 3:38 pm, David Miller wrote: > > > Right, I guess we should have been a bit more careful in making > > > this code generic. At least ia64, i386 and x86_64 systems often > > > have video BIOSes in system memory at 0xc0000 (note that this isn't > > > in PCI space). > > > > Even if it is in system memory there, accessing physical RAM using > > ioremap() and asm/io.h accessors is not exactly legal. On sparc64, > > for example, accessing physical RAM as if it were I/O memory will > > result in a BUS ERROR and in fact that's how the bootup crashes > > on sparc64 due to this changeset. > > Good point, we shouldn't use ioremap for the system memory case at all. > Should be __va or something I guess.
That's one part, but this won't update all the pci_map_rom() callers who use asm/io.h accessors on the mapping they get back. Even pci_read_rom() in the sysfs code this change was aimed at uses memcpy_fromio().
Also, as an aside, if we're on a system where the x86 BIOS is unlikely to be executed anyways, we should always use the PCI ROM bar mapping to access the video card's ROM. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |