Spuldrfs: Difference between revisions

From PS3 Developer wiki
Jump to navigation Jump to search
mNo edit summary
 
(9 intermediate revisions by one other user not shown)
Line 1: Line 1:
[[Category:Linux]]
[[Category:OtherOS]]
=Introduction=
=Introduction=


* spuldrfs is a Linux virtual filesystem which allows you to execute isolated SPU modules from user-space.
* spuldrfs is a Linux virtual filesystem which allows you to execute isolated SPU modules from user-space.
* spuldrfs is like spuisofs but can also execute loaders like lv1ldr or isoldr.
* spuldrfs is like spuisofs but can also execute loaders like lv1ldr or isoldr.
* I used this driver e.g. to run modified lv1ldr to dump my ENCDEC keys.
* GIT repo: http://gitorious.ps3dev.net/ps3linux/spuldrfs
=Features=
* MFC data segment faults are handled by the driver. That means you do not have to worry about it.
* Large data buffers which can be used for data exchange between SPU and PPU.
* Data buffers are not physically continuous which eliminates the RAM allocation problem.
* Full access to all SPU registers from user-space.
=Mounting=
<pre>
glevand@debian:~$ sudo mount -t spuldrfs none /mnt
</pre>


=Filesystem Layout=
=Filesystem Layout=
Line 21: Line 36:
--w--w--w- 1 root root      0 Aug 16 11:07 run
--w--w--w- 1 root root      0 Aug 16 11:07 run
-r--r--r-- 1 root root    4096 Aug 16 10:33 shadow
-r--r--r-- 1 root root    4096 Aug 16 10:33 shadow
glevand@debian:~$ cat /mnt/info
buf1 d000000003746000
buf2 d000000003847000
buf3 d000000003948000
glevand@debian:~$
</pre>
</pre>
=Loading Firmware From Linux Kernel Module=
* It's a really neat trick :)
* First, create a pseudo platform device. Then use it to request firmware. After that destroy the platform device.
* We could use it to load metldr automatically into kernel space.
* http://www.crashcourse.ca/wiki/index.php/Loading_external_firmware
{{Linux}}<noinclude>[[Category:Main]]</noinclude>

Latest revision as of 01:58, 3 February 2014

Introduction[edit | edit source]

  • spuldrfs is a Linux virtual filesystem which allows you to execute isolated SPU modules from user-space.
  • spuldrfs is like spuisofs but can also execute loaders like lv1ldr or isoldr.
  • I used this driver e.g. to run modified lv1ldr to dump my ENCDEC keys.
  • GIT repo: http://gitorious.ps3dev.net/ps3linux/spuldrfs

Features[edit | edit source]

  • MFC data segment faults are handled by the driver. That means you do not have to worry about it.
  • Large data buffers which can be used for data exchange between SPU and PPU.
  • Data buffers are not physically continuous which eliminates the RAM allocation problem.
  • Full access to all SPU registers from user-space.

Mounting[edit | edit source]

glevand@debian:~$ sudo mount -t spuldrfs none /mnt

Filesystem Layout[edit | edit source]

glevand@debian:~$ ls -l /mnt
total 0
-rw-rw-rw- 1 root root 1048576 Aug 16 10:33 buf1
-rw-rw-rw- 1 root root 1048576 Aug 16 10:33 buf2
-rw-rw-rw- 1 root root 1048576 Aug 16 10:33 buf3
-r--r--r-- 1 root root       0 Aug 16 10:33 info
-rw-rw-rw- 1 root root 1048576 Aug 16 11:07 ldr
-rw-rw-rw- 1 root root  262144 Aug 16 10:33 ls
-rw-rw-rw- 1 root root 1048576 Aug 16 11:07 metldr
-rw-rw-rw- 1 root root  131072 Aug 16 10:33 priv2
-rw-rw-rw- 1 root root  131072 Aug 16 10:33 problem
--w--w--w- 1 root root       0 Aug 16 11:07 run
-r--r--r-- 1 root root    4096 Aug 16 10:33 shadow
glevand@debian:~$ cat /mnt/info 
buf1 d000000003746000
buf2 d000000003847000
buf3 d000000003948000
glevand@debian:~$ 

Loading Firmware From Linux Kernel Module[edit | edit source]