Patch ID	: P94052701
Summary		: Fix VM context lock timeout in streams
Status		: Mandatory
Date		: 05/27/94
Release		: OS 4.1C
Architectures	: Series5 S4000 Series6
Affected bugs	:
	B940328001

Changed files	:
	sys/os/heap_kmem.c (delta 1.6)
	sys/os/str_buf.c (delta 1.3)

Problem Description:

This patch fixes a lock timeout which may occur when there is no kernel memory
available. In this case, the streams code would loop, waiting for more memory, 
until a vm context lock timeout occurs.


Here is a backtrace from a failure

xdballoc: out of dblks
xdballoc: out of dblks
... 970 of these msgs deleted
xdballoc: out of dblks
xdballoc: out of dblks
xdballoc: out of dblks
xdballoc: out of dblks
panic on cpu 0 in slot 3: lock error: lock timeout
lock 0xff27cf68:`vm_context' held by cpu 1 in slot 9
caused lock timeout on cpu 0 in slot 3 u_procp 0xff7469d0 pid 28917 u_comm `emacs'

secondary panic on cpu 3 in slot 6: lock error: lock timeout
lock 0xff27cf68:`vm_context' held by cpu 1 in slot 9
caused lock timeout on cpu 3 in slot 6 u_procp 0xff745a70 pid 28559 u_comm `in.rlogind'
secondary panic on cpu 4 in slot 5: lock error: lock timeout
lock 0xff27cf68:`vm_context' held by cpu 1 in slot 9
caused lock timeout on cpu 4 in slot 5 u_procp 0xff73fe30 pid 3337 u_comm `in.rlogind'

date: Mon Mar 28 08:27:18 1994

cpu 0 in slot 3 traceback: rp=0xff202d54, pid=28917, pc= _assert_nmi+98(ff0a2ac0), sp=0xff202e08
psr=0x404010c1, ipr=142, ctxnum=0xe9 u_comm `emacs'
Begin traceback { sp = ff202e08
Called from _panic_lock_timeout+10c(ff1792f8), fp=ff202e88
args=ff28d5e8 ff28d5e8 ff28cbb1 ff28cbb2 ff28d5e8 ff28d598
Called from lock_panic_4+c(ff1deda4), fp=ff202f00
args=ff27cf68 ff1dedb0 ff7469d0 ff29af04 0 70f5
Called from _softclock+198(ff0d6d5c), fp=ff202f60
args=ff27cf68 1 0 0 0 69
Called from _hardclock+470(ff0d6220), fp=ff202fc0
args=0 0 ff2850a0 ff8165c0 ff27cf68 0
Called from level6+d8(ff0a25c8), fp=ff203028
args=8d 400010c7 0 0 f4240 ff200000
Called from sr_sup+1c(ff0a1d14), fp=ffffee90
args=6 1 0 0 0 ff31a4dc
Called from sr_user+68(ff0a1968), fp=ffffeef0
args=0 4 0 ff2796e4 f4240 ff200000
Called from TOO LOW+9f000(9f000), fp=f7ffd2c0
args=1 ff000000 fffc00 80000000 d7434 3000000
End traceback }

cpu 1 in slot 9 traceback: rp=0xffffe4e4, pid=124, pc= l2loop+c(ff1de078), sp=0xffffe598
psr=0x40000fc1, ipr=142, ctxnum=0xd u_comm `syslogd'
Begin traceback { sp = ffffe598
Called from _prf+40(ff0ef40c), fp=ffffe600
args=ffffe66b 0 3e 0 ffffe6e8 0
Called from _sprintf+38(ff0ef0dc), fp=ffffe6e8
args=ff251ba5 0 8 0 ffffe66b 0
Called from _logpri+28(ff0ef3a0), fp=ffffe748
args=ffffe7a8 ff251ba0 3 300 1010 ffffe794
Called from _log+1c(ff0ef324), fp=ffffe7b8
args=3 400 8b 0 1 380
Called from _xdballoc+a8(ff0e5160), fp=ffffe818
args=3 ff251840 0 1 8b 0
Called from _allocb+d4(ff0e4f64), fp=ffffe878
args=1 400 ff276050 8b 8 0
Called from _do_output+b8(ff0f9b70), fp=ffffe8d8
args=fd8054e8 fdaecb78 40 82 ff27605c 3
Called from _ldtermwmsg+88(ff0f99b0), fp=ffffe948
args=0 0 ffffe9ac fdf97280 40 0
Called from _ldtermwsrv+4c(ff0f990c), fp=ffffe9b0
args=fb2e976c facca800 82 82 0 fdf97280
Called from _queuerun+174(ff0e7028), fp=ffffea10
args=fb2e976c 400 ff289400 1 28 facca800
Called from _runqueues+c4(ff0e7158), fp=ffffea70
args=0 fffe 23c000 1 fa881844 fb2e976c
Called from _strwrite+2c0(ff0e975c), fp=ffffead0
args=fa88188c facca818 36 0 0 0
Called from _cnwrite+54(ff173e50), fp=ffffeb30
args=1000 ffffee2c d fa880b3c 0 facca818
Called from _io_ccall+38(ff1795b8), fp=ffffeb90
args=1 ffffee2c ff25b028 0 9e7d0907 0
Called from _spec_rdwr+380(ff138010), fp=ffffebf0
args=1 ff173dfc 0 ffffee2c ff25b028 0
Called from _vno_rw+bc(ff10c8d4), fp=ffffec70
args=fd86cce4 ffffee2c 1 2 0 0
Called from _rwuio+278(ff0f3860), fp=ffffecd0
args=ff71767c 1 ffffee2c a fd86cce4 2
Called from _writev+68(ff0f2af8), fp=ffffed48
args=ffffeddc 6 ff71767c ff252cc8 ffffee2c ff71767c
Called from _syscall+6e0(ff1e24d4), fp=ffffee40
args=ffffef78 0 79 3c8 ff2509b8 ffffef78
Called from SC_st_have_window+c(ff0a2b8c), fp=ffffeef0
args=0 0 8400 7efefeff ffffef4c fd805488
Called from TOO LOW+37d0(37d0), fp=f7fbf560
args=7 f7fbf9c8 6 0 3 8894
End traceback }
