sgi-ip20-work-around-cvt-bug-20011017
authorChas Williams <chas@cmf.nrl.navy.mil>
Wed, 17 Oct 2001 22:07:49 +0000 (22:07 +0000)
committerDerrick Brashear <shadow@dementia.org>
Wed, 17 Oct 2001 22:07:49 +0000 (22:07 +0000)
commit013d5abbc4cc5a98ab1a66eb9fab01e35acf6d27
treede77647ee05036243044c8d8beaaf31611a8ed47
parent56933c552af2f5e01f6ea74d9c8bb50acd17c5db
sgi-ip20-work-around-cvt-bug-20011017

"apparently the rev 1 r5000 chips implement 'cvt' incorrectly.  the irix
kernel works around this problem by checking each text page mapped into
memory and doing a fixup on the cvt instructions.  it tries to maintain
a hash of these pages using fid2() or fid() if fid2() returns ENOSYS.
afs, in an effort to prevent people from doing checkpoints on an afs
filesystem, makes fid2() return EINVAL.  this also keeps the kernel from
mapping executables that are in afs space on the broken r5000's.

this is the patch i have been using for the past couple years while
waiting for an official fix.  it makes fid2() return ENOSYS, so you
now need to have to have v_ckpt.  however i disabled the rest of the
CKPT code since i have no idea how well that code actually works.
additionally, this behavior is only functional on machines with the
'broken' r5000 h/w.  i cant think of a better way to fix this problem
since i cant change the irix kernel."
src/afs/IRIX/osi_vfs.h
src/afs/IRIX/osi_vfsops.c
src/afs/IRIX/osi_vnodeops.c
src/libafs/MakefileProto.IRIX.in