1500€ - File Looper will be released as FOSS

TruHobbyist

Member
Jul 27, 2019
33
29
18
Hi all,

after considering pros and cons, I decided to offer the full source code of File Looper v1.2.1 through a bounty on IRIXNet. Having participated and claimed previous bounties on that site, I found this to be the most direct way to do this.

The benefit for the community is not only having access to the tool, which already works. But also of having a hands on, clean compilable and debugged source code for creating kernel level device drivers, both for character and block devices (the latter is not fully documented in the official device driver guide). Furthermore, working code for handling of hardware graph devices and tons of information that you only get once you got through the whole process (module loading sequences, sending process signals, mp synchronization, etal.)

For participating, please refer to 1500€ - File Looper will be released as FOSS . Thank you!

Wanted to share this personally on this site.

Regards

Tru
 

stormy

Active member
Jun 23, 2019
123
46
28
Does file looper work on a fully-patched-up Irix 6.5.30? Or only on a fully un-patched 6.5.30 with your personal home-made patch?
 

TruHobbyist

Member
Jul 27, 2019
33
29
18
Does file looper work on a fully-patched-up Irix 6.5.30? Or only on a fully un-patched 6.5.30 with your personal home-made patch?
Hey stormy,

could you provide a list of patches installed on your .30 installation? I'll take a look into this.
 

stormy

Active member
Jun 23, 2019
123
46
28
Patches: patchSG0007111 patchSG0007114 patchSG0007128 patchSG0007141 patchSG0007144 patchSG0007146 patchSG0007147 patchSG0007149 patchSG0007155 patchSG0007162 patchSG0007173 patchSG0007174 patchSG0007177 patchSG0007185 patchSG0007187 patchSG0007188 patchSG0007192 patchSG0007202 patchSG0007207 patchSG0007208 patchSG0007209 patchSG0007214 patchSG0007217 patchSG0007221 patchSG0007227 patchSG0007228 patchSG0007229 patchSG0007232 patchSG0007233 patchSG0007234 patchSG0007235 patchSG0007241 patchSG0007245 patchSG0007246
 
  • Like
Reactions: TruHobbyist

TruHobbyist

Member
Jul 27, 2019
33
29
18
Hi @stormy ,

to solve the problem I implemented the File Looper driver as both dynamic and static kernel modules. When patches are installed, as in your case, the static version should be used since it bypasses the MLOADBLK bug entirely (this bug only affects dynamically loaded block kernel modules - see patchMLOADBLK post for details).

Now the installer allows to use both types of modules:

Code:
bash-2.05b# ./install.sh -h

Syntax:

  ./install.sh [-v] [-i|-u] [-s|-d]
  ./install.sh -h

  -v verbose
  -i install product
  -u uninstall product
  -s static kernel module
  -d dynamic kernel module
  -h print this help menu

When no command line switches are specified, a quiet product install of the static module is performed.
bash-2.05b#

For proof of correct execution, I tested for the MLOADBLK bug using the static version:


Code:
DBG<s>:
[spec_cs_device_hold, 0x8034ecd0]:       jal     bdhold+0x0
[spec_cs_device_hold, 0x8034ecd4]:       move    a0,v0   <a0=0xffffffff8180dc00,v0=0xffffffff8052d000>
DBG<s>:
[bdhold, 0x80209488]:    lw      at,0x2c(a0) <0x8052d02c>        <at=0x3,a0=0xffffffff8052d000>
DBG<s>:
[bdhold, 0x8020948c]:    addiu   sp,sp,0xfffffff0        <sp=0xffffffffffffcb50>
DBG<s>:
[bdhold, 0x80209490]:    bne     at,zero,bdhold+0x0      <at=0x0>
[bdhold, 0x80209494]:    sd      ra,0x0(sp) <0xffffcb40> <ra=0xffffffff8034ecd8,sp=0xffffffffffffcb40>
DBG<s>:
[bdhold, 0x80209498]:    move    a0,zero <a0=0xffffffff8052d000>
DBG<s>:
[bdhold, 0x8020949c]:    move    v0,a0   <v0=0xffffffff8052d000,a0=0x0>
DBG<s>:
[bdhold, 0x802094a0]:    jr      ra      <ra=0xffffffff8034ecd8>
[bdhold, 0x802094a4]:    addiu   sp,sp,0x10      <sp=0xffffffffffffcb40>
DBG<s>: s
[spec_cs_device_hold, 0x8034ecd8]:       move    a0,v0   <a0=0x0,v0=0x0>
DBG<s>:
Upon entering the bdhold() function it returns immediately, thus circumventing the buggy devhold() function. The next fragment may give you a better perspective on the two possible execution paths inside bdhold():

Code:
DBG: bdhold/20i
[bdhold, 0x80209488]:    8c81002c       lw       at,0x2c(a0)
[bdhold, 0x8020948c]:    27bdfff0       addiu    sp,sp,0xfffffff0
[bdhold, 0x80209490]:    14200005       bne      at,zero,bdhold+0x0
[bdhold, 0x80209494]:    ffbf0000       sd       ra,0x0(sp)
[bdhold, 0x80209498]:    00002025       move     a0,zero
[bdhold, 0x8020949c]:    00801025       move     v0,a0
[bdhold, 0x802094a0]:    03e00008       jr       ra   <-- for static modules, this path is taken immediately, avoiding the bug
[bdhold, 0x802094a4]:    27bd0010       addiu    sp,sp,0x10
[bdhold, 0x802094a8]:    0c0824f4       jal      bdevhold+0x0     <-- bug is triggered over this path
[bdhold, 0x802094ac]:    00000000       nop
[bdhold, 0x802094b0]:    dfbf0000       ld       ra,0x0(sp)
[bdhold, 0x802094b4]:    1000fff9       b        bdhold+0x0
[bdhold, 0x802094b8]:    00402025       move     a0,v0
DBG:

File Looper v1.2.1 is now officially supported on patched systems, no matter what patches :)


Tru
 

TruHobbyist

Member
Jul 27, 2019
33
29
18
@TruHobbyist I meant to ask sooner, does this work on 6.5.22 as well?
The driver was developed using the latest Driver Development Guide https://irix7.com/techpubs/007-0911-210.pdf. On page 3, it reads:

Code:
This rewrite of the IRIX Device Driver Programmer’s Guide supports the IRIX 6.5.22 release.
I haven't tried it on that version though, but if there's any interest, let me know and I'll give it a try.

Nice to see you around here, btw.
 

About us

  • Silicon Graphics User Group (SGUG) is a community for users, developers, and admirers of Silicon Graphics (SGI) products. We aim to be a friendly hobbyist community for discussing all aspects of SGIs, including use, software development, the IRIX Operating System, and troubleshooting, as well as facilitating hardware exchange.

User Menu