linux/arch/ia64/kernel
Bjorn Helgaas 80851ef2a5 [PATCH] /dev/mem: validate mmap requests
Add a hook so architectures can validate /dev/mem mmap requests.

This is analogous to validation we already perform in the read/write
paths.

The identity mapping scheme used on ia64 requires that each 16MB or
64MB granule be accessed with exactly one attribute (write-back or
uncacheable).  This avoids "attribute aliasing", which can cause a
machine check.

Sample problem scenario:
  - Machine supports VGA, so it has uncacheable (UC) MMIO at 640K-768K
  - efi_memmap_init() discards any write-back (WB) memory in the first granule
  - Application (e.g., "hwinfo") mmaps /dev/mem, offset 0
  - hwinfo receives UC mapping (the default, since memmap says "no WB here")
  - Machine check abort (on chipsets that don't support UC access to WB
    memory, e.g., sx1000)

In the scenario above, the only choices are
  - Use WB for hwinfo mmap.  Can't do this because it causes attribute
    aliasing with the UC mapping for the VGA MMIO space.
  - Use UC for hwinfo mmap.  Can't do this because the chipset may not
    support UC for that region.
  - Disallow the hwinfo mmap with -EINVAL.  That's what this patch does.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Cc: Hugh Dickins <hugh@veritas.com>
Cc: "Luck, Tony" <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-01-08 20:14:02 -08:00
..
cpufreq [IA64] Add ACPI based P-state support 2005-08-26 15:09:24 -07:00
Makefile [PATCH] cpusets: Move the ia64 domain setup code to the generic code 2005-09-07 16:57:40 -07:00
acpi-ext.c [ACPI] Lindent all ACPI files 2005-08-05 00:45:14 -04:00
acpi.c [IA64] move ACPI IOSAPIC locality domain mapping from pci.c to acpi.c 2005-09-19 15:57:48 -07:00
asm-offsets.c [IA64] fix circular dependency on generation of asm-offsets.h 2005-09-13 08:50:39 -07:00
brl_emu.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cyclone.c [PATCH] fix missing includes 2005-10-30 17:37:32 -08:00
efi.c [PATCH] /dev/mem: validate mmap requests 2006-01-08 20:14:02 -08:00
efi_stub.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
entry.S [PATCH] Swap Migration V5: sys_migrate_pages interface 2006-01-08 20:12:42 -08:00
entry.h [IA64] Drop spurious paren in entry.h 2005-06-20 09:34:02 -07:00
fsys.S kbuild: ia64 use generic asm-offsets.h support 2005-09-09 22:03:13 +02:00
gate-data.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
gate.S kbuild: ia64 use generic asm-offsets.h support 2005-09-09 22:03:13 +02:00
gate.lds.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
head.S [PATCH] remove gcc-2 checks 2006-01-08 20:14:02 -08:00
ia64_ksyms.c [PATCH] remove gcc-2 checks 2006-01-08 20:14:02 -08:00
init_task.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
iosapic.c [IA64] Manual merge fix for 3 files 2005-09-08 14:27:13 -07:00
irq.c [IA64] wider use of for_each_cpu_mask() in arch/ia64 2005-10-25 15:10:08 -07:00
irq_ia64.c [IA64] assign_irq_vector() should not panic 2005-07-11 10:30:07 -07:00
irq_lsapic.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ivt.S [IA64] polish comments for tlb fault handler in ivt.S 2005-11-17 09:48:15 -08:00
jprobes.S [PATCH] Kprobes: prevent possible race conditions ia64 changes 2005-09-07 16:58:00 -07:00
kprobes.c [PATCH] kprobes: increment kprobe missed count for multiprobes 2005-12-12 08:57:45 -08:00
machvec.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mca.c [IA64] Extend notify_die() hooks for IA64 2005-11-07 11:27:13 -08:00
mca_asm.S [IA64] Wire in the MCA/INIT handler stacks 2005-09-22 13:24:19 -07:00
mca_drv.c Pull mca-check-psp into release branch 2005-11-10 10:38:05 -08:00
mca_drv.h [IA64] mca_drv cleanup 2005-09-16 10:39:40 -07:00
mca_drv_asm.S [IA64] mca_drv cleanup 2005-09-16 10:39:40 -07:00
minstate.h [IA64] MCA/INIT: remove the physical mode path from minstate.h 2005-09-11 14:09:12 -07:00
module.c [IA64] wider use of for_each_cpu_mask() in arch/ia64 2005-10-25 15:10:08 -07:00
numa.c [IA64] fix generic/up builds 2005-07-06 18:18:10 -07:00
pal.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
palinfo.c [IA64] Allow /proc/pal/cpu0/vm_info under the simulator 2005-08-31 08:34:51 -07:00
patch.c [IA64] Fix 2.6 kernel for the new ia64 assembler 2005-10-25 15:05:45 -07:00
perfmon.c [PATCH] kfree cleanup: arch 2005-11-07 07:54:06 -08:00
perfmon_default_smpl.c [IA64] perfmon: make pfm_sysctl a global, and other cleanup 2005-04-25 13:08:30 -07:00
perfmon_generic.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
perfmon_itanium.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
perfmon_mckinley.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
process.c [IA64] fix for SET_PERSONALITY when CONFIG_IA32_SUPPORT is not set. 2005-12-14 08:52:57 -08:00
ptrace.c [PATCH] use ptrace_get_task_struct in various places 2006-01-08 20:13:51 -08:00
sal.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
salinfo.c [IA64] Allow salinfo_decode to detect signals on read 2005-12-05 11:49:17 -08:00
semaphore.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
setup.c [IA64] Fix compile warnings in setup.c 2006-01-05 13:30:52 -08:00
sigframe.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
signal.c [IA64] align signal-frame even when not using alternate signal-stack 2005-11-08 09:58:06 -08:00
smp.c [IA64] wider use of for_each_cpu_mask() in arch/ia64 2005-10-25 15:10:08 -07:00
smpboot.c [PATCH] sched: disable preempt in idle tasks 2005-11-09 07:56:33 -08:00
sys_ia64.c [IA64] Rationalise Region Definitions 2005-08-24 15:35:41 -07:00
time.c [IA64] disable preemption in udelay() 2005-12-16 10:00:24 -08:00
topology.c [ACPI] delete CONFIG_ACPI_BOOT 2005-08-24 12:08:54 -04:00
traps.c [IA64] Remove getting break_num by decoding instruction 2005-11-29 09:24:39 -08:00
unaligned.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
uncached.c [IA64] uncached ref count leak 2005-12-16 10:29:52 -08:00
unwind.c [IA64] MCA/INIT: remove obsolete unwind code 2005-09-11 14:09:34 -07:00
unwind_decoder.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
unwind_i.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vmlinux.lds.S [IA64] Add __read_mostly support for IA64 2005-12-16 10:52:46 -08:00