kernel-ark/include/asm-ia64
Brent Casavant e08e6c5213 [IA64] hooks to wait for mmio writes to drain when migrating processes
On SN2, MMIO writes which are issued from separate processors are not
guaranteed to arrive in any particular order at the IO hardware.  When
performing such writes from the kernel this is not a problem, as a
kernel thread will not migrate to another CPU during execution, and
mmiowb() calls can guarantee write ordering when control of the IO
resource is allowed to move between threads.

However, when MMIO writes can be performed from user space (e.g. DRM)
there are no such guarantees and mechanisms, as the process may
context-switch at any time, and may migrate to a different CPU as part
of the switch.  For such programs/hardware to operate correctly, it is
required that the MMIO writes from the old CPU be accepted by the IO
hardware before subsequent writes from the new CPU can be issued.

The following patch implements this behavior on SN2 by waiting for a
Shub register to indicate that these writes have been accepted.  This
is placed in the context switch-in path, and only performs the wait
when the newly scheduled task changes CPUs.

Signed-off-by: Prarit Bhargava <prarit@sgi.com>
Signed-off-by: Brent Casavant <bcasavan@sgi.com>
2006-01-26 15:55:52 -08:00
..
sn [IA64-SGI] sn2 mutex conversion 2006-01-17 13:53:24 -08:00
a.out.h
acpi-ext.h [ACPI] fix IA64 build warning 2005-08-04 22:29:34 -04:00
acpi.h [IA64] Add ACPI based P-state support 2005-08-26 15:09:24 -07:00
agp.h [PATCH] AGP fix for Xen VMM 2005-06-07 12:35:43 -07:00
asmmacro.h
atomic.h [PATCH] mutex subsystem, add atomic_xchg() to all arches 2006-01-09 15:59:17 -08:00
auxvec.h [PATCH] auxiliary vector cleanups 2005-09-07 16:57:21 -07:00
bitops.h [FLS64]: generic version 2006-01-03 13:11:06 -08:00
break.h [PATCH] Kprobes/IA64: kdebug die notification mechanism 2005-06-23 09:45:22 -07:00
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 [PATCH] ia64: task_pt_regs() 2006-01-12 09:08:58 -08:00
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 [PATCH] auxiliary vector cleanups 2005-09-07 16:57:21 -07:00
emergency-restart.h [PATCH] Add emergency_restart() 2005-07-26 14:35:41 -07:00
errno.h
fcntl.h [PATCH] Clean up struct flock definitions 2005-09-07 16:57:38 -07:00
fpswa.h
fpu.h
futex.h [PATCH] consolidate asm/futex.h 2006-01-08 20:13:39 -08:00
gcc_intrin.h [IA64] fix fls() 2005-04-21 11:07:59 -07:00
hardirq.h
hw_irq.h [PATCH] x86/x86_64: deferred handling of writes to /proc/irqxx/smp_affinity 2005-09-07 16:57:15 -07:00
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 [PATCH] Generic ioctl.h 2006-01-10 08:01:34 -08:00
ioctls.h
iosapic.h [IA64] Minor cleanups - remove unnecessary function prototype in iosapic.h 2005-09-07 14:00:40 -07:00
ipcbuf.h
irq.h [IA64] Manual merge fix for 3 files 2005-09-08 14:27:13 -07:00
kdebug.h [IA64] Extend notify_die() hooks for IA64 2005-11-07 11:27:13 -08:00
kmap_types.h
kprobes.h [IA64] prevent accidental modification of args in jprobe handler 2006-01-13 14:45:21 -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 [IA64] hooks to wait for mmio writes to drain when migrating processes 2006-01-26 15:55:52 -08:00
machvec.h [IA64] hooks to wait for mmio writes to drain when migrating processes 2006-01-26 15:55:52 -08: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 [IA64] Fix race in mm-context wrap-around logic. 2005-08-12 15:05:21 -07:00
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
mutex.h [PATCH] mutex subsystem, add default include/asm-*/mutex.h files 2006-01-09 15:59:19 -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 [IA64] pal cache flush patch 2006-01-16 15:44:53 -08:00
param.h [PATCH] ia64: Selectable Timer Interrupt Frequency 2005-06-23 09:45:10 -07:00
parport.h
patch.h
pci.h [PATCH] Make sparc64 use setup-res.c 2005-09-08 14:57:25 -07:00
percpu.h [PATCH] adjust per_cpu definition in non-SMP case 2005-06-23 09:45:28 -07:00
perfmon_default_smpl.h
perfmon.h [IA64] alternate perfmon handler 2005-05-18 16:14:30 -07:00
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 [IA64] hooks to wait for mmio writes to drain when migrating processes 2006-01-26 15:55:52 -08:00
ptrace_offsets.h
ptrace.h [PATCH] ia64: task_pt_regs() 2006-01-12 09:08:58 -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 [PATCH] kprobes/ia64: refuse kprobe on ivt code 2005-06-27 15:23:54 -07:00
segment.h
semaphore.h [IA64] Fix bug in ia64 specific down() function 2006-01-17 14:04:00 -08:00
sembuf.h
serial.h
setup.h
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h [PATCH] consolidate SIGEV_PAD_SIZE 2005-05-01 08:59:08 -07:00
signal.h [PATCH] asm/signal.h unification 2005-05-04 07:33:15 -07:00
smp.h [PATCH] smp_processor_id() cleanup 2005-06-21 18:46:13 -07:00
socket.h [NET]: Introduce SO_{SND,RCV}BUFFORCE socket options 2005-08-29 15:31:35 -07:00
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 [IA64] hooks to wait for mmio writes to drain when migrating processes 2006-01-26 15:55:52 -08:00
termbits.h
termios.h
thread_info.h [IA64] hooks to wait for mmio writes to drain when migrating processes 2006-01-26 15:55:52 -08: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 [IA64] Zonelists for nodes without cpus 2006-01-17 13:55:46 -08:00
types.h [PATCH] sab: consolidate kmem_bufctl_t 2005-09-05 00:05:48 -07:00
uaccess.h [PATCH] ia64 basic __user annotations 2005-09-29 08:46:27 -07:00
ucontext.h
unaligned.h
uncached.h [PATCH] ia64 uncached alloc 2005-06-21 18:46:18 -07:00
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 [IA64-SGI] pcdp: add PCDP pci interface support 2005-06-28 09:09:06 -07:00
xor.h