linux/arch/ia64
Bjorn Helgaas 9b50ffb0c0 [IA64] make ioremap avoid unsupported attributes
Example memory map (from HP sx1000 with VGA enabled):
    0x00000 - 0x9FFFF supports only WB (cacheable) access
    0xA0000 - 0xBFFFF supports only UC (uncacheable) access
    0xC0000 - 0xFFFFF supports only WB (cacheable) access

pci_read_rom() indirectly uses ioremap(0xC0000) to read the shadow VGA option
ROM.  ioremap() used to default to a 16MB or 64MB UC kernel identity mapping,
which would cause an MCA when reading 0xC0000 since only WB is supported there.

X uses reads the option ROM to initialize devices.  A smaller test case is:
  # echo 1 > /sys/bus/pci/devices/0000:aa:03.0/rom
  # cp /sys/bus/pci/devices/0000:aa:03.0/rom x

To avoid this, we can use the same ioremap_page_range() strategy that most
architectures use for all ioremaps.  These page table mappings come out of the
vmalloc area.  On ia64, these are in region 5 (0xA... addresses) and typically
use 16KB or 64KB mappings instead of 16MB or 64MB mappings.  The smaller
mappings give more flexibility to use the correct attributes.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
2007-03-30 09:37:41 -07:00
..
configs [IA64] refresh config files 2007-03-08 11:20:17 -08:00
dig [PATCH] tty: Remove include of screen_info.h from tty.h 2006-07-10 13:24:16 -07:00
hp [PATCH] mark struct file_operations const 2 2007-02-12 09:48:44 -08:00
ia32 [IA64] sync compat getdents 2007-03-06 14:49:24 -08:00
kernel [IA64] Speed up boot - skip unnecessary clock calibration 2007-03-29 15:17:11 -07:00
lib [IA64] always build arch/ia64/lib/xor.o 2007-03-06 14:48:52 -08:00
mm [IA64] make ioremap avoid unsupported attributes 2007-03-30 09:37:41 -07:00
oprofile Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
pci [IA64] Fix arch/ia64/pci/pci.c:571: warning: `return' with a value 2007-03-29 15:41:37 -07:00
scripts Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sn [IA64] Fix wrong /proc/iomem on SGI Altix 2007-03-20 13:54:44 -07:00
defconfig [IA64] refresh config files 2007-03-08 11:20:17 -08:00
install.sh Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Kconfig ACPI: IA64: fix allnoconfig build 2007-03-19 23:41:51 -04:00
Kconfig.debug [PATCH] Move Kprobes and Oprofile to "Instrumentation Support" menu 2005-11-07 07:53:35 -08:00
Makefile [IA64] add vmlinuz target 2006-06-21 14:31:07 -07:00
module.lds Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00