Revision 98873f53becea9a8a46972ff252e96fe575b120d authored by Ralf Baechle on 09 December 2008, 17:58:46 UTC, committed by Ralf Baechle on 09 December 2008, 21:55:43 UTC
Certain X11 servers such as the SIS server will only work if PCI mmap is
implemented.  This patch implements PCI mmap but to be on the same side
so close to a release it only supports uncached mappings so performance
will not be optimal for some uses such as framebuffers.

Thanks to Zhang Le <r0bertz@gentoo.org> for the original report and
testing.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
1 parent bbeba4c
Raw File
t3-l1-pi-steal.tst
#
# rt-mutex test
#
# Op: C(ommand)/T(est)/W(ait)
# |  opcode
# |  |     threadid: 0-7
# |  |     |  opcode argument
# |  |     |  |
# C: lock: 0: 0
#
# Commands
#
# opcode	opcode argument
# schedother	nice value
# schedfifo	priority
# lock		lock nr (0-7)
# locknowait	lock nr (0-7)
# lockint	lock nr (0-7)
# lockintnowait	lock nr (0-7)
# lockcont	lock nr (0-7)
# unlock	lock nr (0-7)
# lockbkl	lock nr (0-7)
# unlockbkl	lock nr (0-7)
# signal	thread to signal (0-7)
# reset		0
# resetevent	0
#
# Tests / Wait
#
# opcode	opcode argument
#
# prioeq	priority
# priolt	priority
# priogt	priority
# nprioeq	normal priority
# npriolt	normal priority
# npriogt	normal priority
# locked	lock nr (0-7)
# blocked	lock nr (0-7)
# blockedwake	lock nr (0-7)
# unlocked	lock nr (0-7)
# lockedbkl	dont care
# blockedbkl	dont care
# unlockedbkl	dont care
# opcodeeq	command opcode or number
# opcodelt	number
# opcodegt	number
# eventeq	number
# eventgt	number
# eventlt	number

#
# 3 threads 1 lock PI steal pending ownership
#
C: resetevent:		0: 	0
W: opcodeeq:		0: 	0

# Set schedulers
C: schedother:		0: 	0
C: schedfifo:		1: 	80
C: schedfifo:		2: 	81

# T0 lock L0
C: lock:		0: 	0
W: locked:		0: 	0

# T1 lock L0
C: lock:		1: 	0
W: blocked:		1: 	0
T: prioeq:		0: 	80

# T0 unlock L0
C: unlock:		0: 	0

# Wait until T1 is in the wakeup loop
W: blockedwake:		1: 	0
T: priolt:		0: 	1

# T2 lock L0
C: lock:		2: 	0
# T1 leave wakeup loop
C: lockcont:		1: 	0

# T2 must have the lock and T1 must be blocked
W: locked:		2: 	0
W: blocked:		1: 	0

# T2 unlock L0
C: unlock:		2: 	0

# Wait until T1 is in the wakeup loop and let it run
W: blockedwake:		1: 	0
C: lockcont:		1: 	0
W: locked:		1: 	0
C: unlock:		1: 	0
W: unlocked:		1: 	0
back to top