linux-kernel-test/arch/ia64/sn/kernel
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
..
sn2 [IA64] hooks to wait for mmio writes to drain when migrating processes 2006-01-26 15:55:52 -08:00
bte_error.c [IA64-SGI] Altix BTE error handling fixes 2006-01-13 14:06:53 -08:00
bte.c [IA64-SGI] bte_copy nasid_index fix 2005-11-21 14:19:36 -08:00
huberror.c [IA64-SGI] Altix BTE error handling fixes 2006-01-13 14:06:53 -08:00
idle.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
io_init.c [IA64-SGI] Older PROM WAR for device flush code 2006-01-17 10:08:37 -08:00
iomv.c [IA64-SGI] altix: enable vgacon support 2005-06-28 09:23:04 -07:00
irq.c [IA64] Cleanup of arch/ia64/sn and include/asm-ia64/sn 2006-01-16 19:54:40 -08:00
klconflib.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
machvec.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Makefile [IA64-SGI] SGI Altix cross partition functionality [3/3] 2005-05-03 12:37:19 -07:00
mca.c [IA64-SGI] sn2 mutex conversion 2006-01-17 13:53:24 -08:00
setup.c [IA64] hooks to wait for mmio writes to drain when migrating processes 2006-01-26 15:55:52 -08:00
tiocx.c [IA64] Cleanup of arch/ia64/sn and include/asm-ia64/sn 2006-01-16 19:54:40 -08:00
xp_main.c [IA64-SGI] sn2 mutex conversion 2006-01-17 13:53:24 -08:00
xp_nofault.S [IA64-SGI] SGI Altix cross partition functionality (2nd 2005-05-03 12:16:52 -07:00
xpc_channel.c [IA64-SGI] sn2 mutex conversion 2006-01-17 13:53:24 -08:00
xpc_main.c [IA64-SGI] sn2 mutex conversion 2006-01-17 13:53:24 -08:00
xpc_partition.c [IA64-SGI] move xpc.h to include/asm-ia64/sn (cleanup) 2006-01-13 10:40:23 -08:00
xpnet.c [PATCH] more SPIN_LOCK_UNLOCKED -> DEFINE_SPINLOCK conversions 2005-09-09 14:03:48 -07:00