kernel-ark/include/asm-ia64
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
..
sn [IA64-SGI] altix: pci_window fixup 2005-12-06 09:09:23 -08:00
a.out.h
acpi-ext.h
acpi.h
agp.h
asmmacro.h
atomic.h [PATCH] atomic_long_t & include/asm-generic/atomic.h V2 2006-01-06 08:33:29 -08:00
auxvec.h
bitops.h [FLS64]: generic version 2006-01-03 13:11:06 -08:00
break.h
bug.h [PATCH] remove gcc-2 checks 2006-01-08 20:14:02 -08:00
bugs.h
byteorder.h
cache.h [PATCH] Kill L1_CACHE_SHIFT_MAX 2006-01-08 20:13:39 -08:00
cacheflush.h
checksum.h
compat.h
cpu.h
cputime.h
current.h
cyclone.h
delay.h [IA64] disable preemption in udelay() 2005-12-16 10:00:24 -08:00
div64.h
dma-mapping.h [PATCH] ia64: re-implement dma_get_cache_alignment to avoid EXPORT_SYMBOL 2005-11-07 07:53:23 -08:00
dma.h
elf.h
emergency-restart.h
errno.h
fcntl.h
fpswa.h
fpu.h
futex.h [PATCH] consolidate asm/futex.h 2006-01-08 20:13:39 -08:00
gcc_intrin.h
hardirq.h
hw_irq.h
ia32.h [IA64] Change SET_PERSONALITY to comply with comment in binfmt_elf.c. 2005-12-06 09:12:34 -08:00
ia64regs.h
ide.h
intel_intrin.h
intrinsics.h
io.h [PATCH] /dev/mem: validate mmap requests 2006-01-08 20:14:02 -08:00
ioctl.h
ioctls.h
iosapic.h
ipcbuf.h
irq.h
kdebug.h [IA64] Extend notify_die() hooks for IA64 2005-11-07 11:27:13 -08:00
kmap_types.h
kprobes.h [PATCH] Kprobes: Track kprobe on a per_cpu basis - ia64 changes 2005-11-07 07:53:45 -08:00
kregs.h
linkage.h
local.h [IA64] Fix missing parameter for local_add/sub 2005-12-07 11:30:11 -08:00
machvec_dig.h
machvec_hpsim.h
machvec_hpzx1_swiotlb.h [IA64] more robust zx1/sx1000 machvec support 2005-09-14 16:22:11 -07:00
machvec_hpzx1.h [IA64] more robust zx1/sx1000 machvec support 2005-09-14 16:22:11 -07:00
machvec_init.h
machvec_sn2.h
machvec.h Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2005-10-28 21:09:26 -07:00
mc146818rtc.h
mca_asm.h [PATCH] MCA/INIT: use per cpu stacks 2005-09-11 14:08:41 -07:00
mca.h [IA64] Wire in the MCA/INIT handler stacks 2005-09-22 13:24:19 -07:00
meminit.h Pull sparsemem-v5 into release branch 2005-10-28 14:32:56 -07:00
mman.h [PATCH] madvise(MADV_REMOVE): remove pages from tmpfs shm backing store 2006-01-06 08:33:22 -08:00
mmu_context.h [IA64] make mmu_context.h and tlb.c 80-column friendly 2005-11-03 14:43:50 -08:00
mmu.h
mmzone.h [PATCH] V5 ia64 SPARSEMEM - conditional changes for SPARSEMEM 2005-10-04 13:21:13 -07:00
module.h
msgbuf.h
msi.h [PATCH] PCI: Change MSI to use physical delivery mode always 2005-11-10 16:09:18 -08:00
namei.h
nodedata.h [PATCH] V5 ia64 SPARSEMEM - conditional changes for SPARSEMEM 2005-10-04 13:21:13 -07:00
numa.h
numnodes.h
page.h [IA64] - Make pfn_valid more precise for SGI Altix systems 2005-11-29 09:24:10 -08:00
pal.h
param.h
parport.h
patch.h
pci.h
percpu.h
perfmon_default_smpl.h
perfmon.h
pgalloc.h [IA64] 4-level page tables 2005-11-11 09:37:29 -08:00
pgtable.h [IA64] 4-level page tables 2005-11-11 09:37:29 -08:00
poll.h
posix_types.h
processor.h
ptrace_offsets.h
ptrace.h [PATCH] consolidate sys_ptrace() 2005-11-07 07:53:42 -08:00
resource.h
rse.h
rwsem.h [PATCH] add sem_is_read/write_locked() 2005-10-29 21:40:35 -07:00
sal.h [IA64] Split 16-bit severity field in sal_log_record_header 2005-12-13 10:41:49 -08:00
scatterlist.h
sections.h
segment.h
semaphore.h [PATCH] semaphore: Remove __MUTEX_INITIALIZER() 2005-10-30 17:37:27 -08:00
sembuf.h
serial.h
setup.h
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h
smp.h
socket.h
sockios.h
sparsemem.h [PATCH] V5 ia64 SPARSEMEM - conditional changes for SPARSEMEM 2005-10-04 13:21:13 -07:00
spinlock_types.h [PATCH] spinlock consolidation 2005-09-10 10:06:21 -07:00
spinlock.h [PATCH] remove gcc-2 checks 2006-01-08 20:14:02 -08:00
stat.h
statfs.h
string.h
suspend.h
system.h
termbits.h
termios.h
thread_info.h [IA64] fix circular dependency on generation of asm-offsets.h 2005-09-13 08:50:39 -07:00
timex.h
tlb.h [PATCH] mm: tlb_finish_mmu forget rss 2005-10-29 21:40:37 -07:00
tlbflush.h [IA64] Use bitmaps for efficient context allocation/free 2005-10-31 14:36:05 -08:00
topology.h [PATCH] x86_64/ia64 : Fix compilation error for node_to_first_cpu 2005-12-24 12:30:22 -08:00
types.h
uaccess.h [PATCH] ia64 basic __user annotations 2005-09-29 08:46:27 -07:00
ucontext.h
unaligned.h
uncached.h
unistd.h [PATCH] Swap Migration V5: sys_migrate_pages interface 2006-01-08 20:12:42 -08:00
unwind.h [IA64] MCA/INIT: remove obsolete unwind code 2005-09-11 14:09:34 -07:00
user.h
ustack.h
vga.h
xor.h