Editing Talk:Hypervisor Reverse Engineering

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
Merge needed of info from:
= MMIO / Memorymap =
[https://web.archive.org/web/20130623170001/https://webcache.googleusercontent.com/search?q=cache:http%3A%2F%2Fwiki.gitbrew.org%2Fwikibrew%2FPS3%3AHvReverseEngineering wiki.gitbrew.org]
and
[https://web.archive.org/web/20111217183835/http://www.ps3devwiki.com/index.php?title=Talk:Hypervisor_Reverse_Engineering]
 
== MMIO / Memorymap ==
{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
! Physical Address !! Size !! <abbr title="DeviceID">ID</abbr> !! Usage !! Address<br />in HV dump<br />(3.15) !! Notes
! Physical Address !! Size !! <abbr title="DeviceID">ID</abbr> !! Usage !! Address<br />in HV dump<br />(3.15) !! Notes
|-
|-
| 0x800000 || 0x20000 ||  || LV0 Code Region || ||
| 0x20000000000 || 0x80000 ||  || SPE0 MMIO Memory Region || ||
|-
| 0x200000 || 0x400000 ||  || LV1 Code Region || ||
|-
| 0x8000000 / 0x1000000(DECR) || 0x800000 || || LV2 Region || || The region you get when you dump lv2
|-
| 0x20000000000 || 0x80000 ||  || SPE0 MMIO Memory Region || || (be.0.bp_base)
|-
|-
| 0x20000080000 || 0x80000 ||  || SPE1 MMIO Memory Region || 0x003ABC20 ||  
| 0x20000080000 || 0x80000 ||  || SPE1 MMIO Memory Region || 0x003ABC20 ||  
Line 28: Line 17:
|-
|-
| 0x20000300000 || 0x80000 ||  || SPE6 MMIO Memory Region || 0x003B5BE0 ||  
| 0x20000300000 || 0x80000 ||  || SPE6 MMIO Memory Region || 0x003B5BE0 ||  
|-
| 0x20000509000 || 0x1000 ||  || Pervasive Memory ||  || Contains 48 bit Serial Number at position 0xC80 size 0x08
|-
|-
|  || 0x1000 ||  || SPE1 Shadow Registers Memory Region || 0x003ABDA0 ||  
|  || 0x1000 ||  || SPE1 Shadow Registers Memory Region || 0x003ABDA0 ||  
Line 43: Line 30:
|  || 0x1000 ||  || SPE6 Shadow Registers Memory Region || 0x003AE5B0 ||  
|  || 0x1000 ||  || SPE6 Shadow Registers Memory Region || 0x003AE5B0 ||  
|-
|-
| 0x2000050A0C8 || 0x4 || || XDR Memory Channel Size (Type 1) || || Shift right 49 and add 0x20 for size.
| 0x24000000000 ||  ||  || SB bus subsystem ||  ||  
|-
| 0x2000050A188 || 0x4 || || XDR Memory Channel Size (Type 0) || || Shift right 49 and add 0x20 for size.
|-
| 0x2000050A210 || 0x4 || || XDR Memory Channel Type || || For use with above memory locations
|-
| 0x24000000000 ||  ||  || SB bus subsystem ||  || (be.0.ioif1.addr)
|-
|-
| 0x24000002000 || 0x200 || 1 || SATA Controller 1 ||  ||  
| 0x24000002000 || 0x200 || 1 || SATA Controller 1 ||  ||  
Line 62: Line 43:
|-
|-
| 0x24000002C00 || 0x200 || 7 || ENCDEC Device ||  ||  
| 0x24000002C00 || 0x200 || 7 || ENCDEC Device ||  ||  
|-
| 0x24000008000 || 0x1000 ||  || SB bus External interrupt controller ||  || Found while looking at linux kernel src. (spider-pic.c)
|-
|-
| 0x24000008100 ||  ||  || SB bus interrupt handler || 0x002B9CC4 ||  
| 0x24000008100 ||  ||  || SB bus interrupt handler || 0x002B9CC4 ||  
|-
|-
| 0x24000008104 ||  ||  || SB bus interrupt handler ||  ||  
| 0x24000008104 ||  ||  || SB bus interrupt handler ||  ||  
|-
| 0x24000087000 || || || SB status/info || ||
|-
|-
| 0x2400008C000 || || || SYSCON (receive packetheader) ||  ||  
| 0x2400008C000 || || || SYSCON (receive packetheader) ||  ||  
Line 125: Line 102:
| 0x2401F000000 || 0x1000000 || || NOR Flash || ||  
| 0x2401F000000 || 0x1000000 || || NOR Flash || ||  
|-
|-
| 0x2401FC00000 || 0x40000 || || SYS ROM || || lv0ldr/bootldr
| 0x28000000000 || 0x2000 ||  || AV Manager (/dev/ioif0) ||  || only mmap system call
|-
| 0x28000000000 || 0x2000 ||  || AV Manager (/dev/ioif0) ||  || (be.0.ioif0.addr) only mmap system call  
|-
|-
| 0x28001800000 || 0x1000 ||  || AV Manager (/dev/ioif0) ||  || only mmap system call
| 0x28001800000 || 0x1000 ||  || AV Manager (/dev/ioif0) ||  || only mmap system call
|-
|-
| 0x28000600000 || 0x4000 ||  || AV Manager (/dev/ioif0) - Output Control Registers ||  || only mmap system call. First 0x2000 for head 0. Next 0x2000 for head 1.
| 0x28000600000 || 0x4000 ||  || AV Manager (/dev/ioif0) ||  || only mmap system call
|-
|-
| 0x28000680000 || 0x4000 ||  || AV Manager (/dev/ioif0) - PLL Control Registers ||  || only mmap system call. First 0x2000 for head 0. Next 0x2000 for head 1.
| 0x28000680000 || 0x4000 ||  || AV Manager (/dev/ioif0) ||  || only mmap system call
|-
|-
| 0x28000080000 || 0x8000 ||  || AV Manager (/dev/ioif0) ||  || only mmap system call
| 0x28000080000 || 0x8000 ||  || AV Manager (/dev/ioif0) ||  || only mmap system call
Line 154: Line 129:
|-
|-
| 0x28000080100 || 0x8000 || 5 || GPU Device Memory Region || 0x003BB420 ||  
| 0x28000080100 || 0x8000 || 5 || GPU Device Memory Region || 0x003BB420 ||  
|-
| 0x2808FC00000 || 0x400000 || || RSX Internal State Memory Area (All) || ||
|-
| 0x2808FF80000 || 0x80000 || || RAMIN (Encompasses RAMHT,RAMFC,DMA Objects, Graphic Objects and GRAPH) || ||
|-
| 0x2808FF90000 || 0x4000 || || RAM Hash Table || ||
|-
| 0x2808FFA0000 || 0x1000 || || RAM FIFO Context || ||
|-
| 0x2808FFC0000 || 0x10000 || || DMA Objects || ||
|-
| 0x2808FFD0000 || 0x10000 || || Graphic Objects || ||
|-
| 0x2808FFE0000 || 0x10000 || || Graphic Context || ||
|-
|-
|  ||  || 9 || FLASH Controller device (StarShip - SS) ||  || FLASH controller doesn't have MMIO regions
|  ||  || 9 || FLASH Controller device (StarShip - SS) ||  || FLASH controller doesn't have MMIO regions
Line 177: Line 138:
| 0x700020000000 || 0xE900000 ||  || GameOS ||  ||  
| 0x700020000000 || 0xE900000 ||  || GameOS ||  ||  
|-
|-
| 0x800000000F000000 || 0x40000 ||  || GameOS HTAB ||  ||  
| 0x800000000F000000 || 0xF000000 ||  || GameOS HTAB ||  ||  
|-
|-
|}
|}


* Linux driver for playing with BE MMIO: http://pastie.org/private/zkzpmj5j6hixacxppk9waq [https://pastebin.com/Y6ZEDdi3 mirror]
=coolstuf=
 
[[Category:Software]][[Category:Linux]]
== PS3 ea memory map ==
<pre>
  0xFFFF_FFFF  +-------------------------------+
              | SPU Thread Mapping Area      | 
  0xF000_0000  +-------------------------------+
              | Raw SPU Mapping Area          | 
  0xE000_0000  +-------------------------------+
              | User Area                    | 
  0xD000_0000  +-------------------------------+
              | RSX Frame Buffer Mapping Area | 
  0xC000_0000  +-------------------------------+
              | MMapper Fixed Area            | 
  0xB000_0000  +-------------------------------+
              |                              | 
              | User Area (heap, ...)        | 
              |                              | 
              |                              | 
              |                              | 
  0x5000_0000  +-------------------------------+
              | PPU/SPU Local Segment        | 
              | (.ppu_data)                  | 
  0x4001_0000  +-------------------------------+
              | PPU/SPU Local Segment        | 
              | (.ppu_rodata)                | 
  0x4000_0000  +-------------------------------+
              | PPU/SPU/RSX Shared Segment    | 
              | (.sdata, .rsx_image)          | 
  0x3001_0000  +-------------------------------+
              | PPU/SPU/RSX Shared Segment    | 
              | (.srodata, .rsx_image)        | 
  0x3000_0000  +-------------------------------+
              | PPU/SPU Shared Segment        | 
              | (.text, .data, .bss, ...)    | 
  0x0001_0000  +-------------------------------+
              | Unmapped Area                | 
  0x0000_0000  +-------------------------------+
</pre>
 
https://web.archive.org/web/20141119024023/http://pastie.org/private/bfqqa2cpadolns9bm0eqa
 
== History of Packet ID Entries ==
 
* 0x18000 <- [[Dispatcher_Manager]]
* 0x8000  <- ???
* 0x17000 <- [[Indi_Info_Manager]]
* 0x10000 <- [[SB_Manager]]
* 0x9000  <- [[SC_Manager]]
* 0x14000 <- [[Secure_LPAR_Loader]]
* 0x15000 <- [[Secure_Profile_Loader]]
* 0x3000  <- [[Secure_RTC_Manager]]
* 0x5000  <- [[Storage_Manager]]
* 0x11000 <- [[Security_Policy_Manager]]
* 0x6000  <- [[Update_Manager]]
* 0x2000  <- [[Virtual_TRM_Manager]]
* 0x19000 <- [[AIM_Manager]]
* 0x22000 <- [[Factory_Data_Manager]]
* 0x24000 <- [[USB_Dongle_Authenticator]]
* 0x25000 <- [[User_Token_Manager]]
* 0x84000 <- http://paste.ubuntu.com/25395752/
 
from SPM
 
[http://pastie.org/private/mdw6lcgcp6sby1qvlipog possible process names][https://pastebin.com/1Z1vG23V]
[http://pastie.org/private/guigb77nctwvsq50tkaeq possible process / packet ids 1][https://pastebin.com/D8VeZ02B]
[http://pastie.org/private/j7cv141bu5jw2acundzla possible process / packet ids 2][https://pastebin.com/fy4KZfmJ]
 
==coolstuf==
Graf_Chokolo's HV BIBLE .rar    163 MB
Graf_Chokolo's HV BIBLE .rar    163 MB
Line 261: Line 155:


Repositories:
Repositories:
* https://www.sendspace.com/file/klddg3
* http://www.sendspace.com/file/qlkzkd
* http://www.sendspace.com/file/qlkzkd
* http://www.mirrorcreator.com/files/0NFBM0PC/coolstuff_0.rar_links
* http://www.mirrorcreator.com/files/0NFBM0PC/coolstuff_0.rar_links
Line 267: Line 160:
* http://fileape.com/index.php?act=download&id=aG4VzHXWKqwXbi50
* http://fileape.com/index.php?act=download&id=aG4VzHXWKqwXbi50


* https://web.archive.org/web/*/http://ps3devwiki.com/files/coolstuf/
* http://ps3devwiki.com/files/coolstuf/


===Content===
==Content==
<pre>
<pre>
dump_lv2_reversing/dev_rflash1/dev1_reg0_16MB.bin 16 MB
dump_lv2_reversing/dev_rflash1/dev1_reg0_16MB.bin 16 MB
Line 610: Line 503:
</pre>
</pre>


==emer init.self==


=== Program 1 ===
=emer init.self=


Crossreference: [https://web.archive.org/web/20110927024647/http://portal.gitbrew.org/wikibrew/PS3:HvReverseEngineering:emer_init.self:Program_1 gitbrew.org::emer_init.self:Program_1] <br />
===Program 1===
Crossreference: [http://portal.gitbrew.org/wikibrew/PS3:HvReverseEngineering:emer_init.self:Program_1 gitbrew.org::emer_init.self:Program_1] <br />


<pre>
<pre>
Line 835: Line 728:
</pre>
</pre>


=== Program 2 ===
===Program 2===
 
Crossreference: [http://portal.gitbrew.org/wikibrew/PS3:HvReverseEngineering:emer_init.self:Program_2 gitbrew.org::emer_init.self:Program_2] <br />
Crossreference: [https://web.archive.org/web/20110927023704/http://portal.gitbrew.org/wikibrew/PS3:HvReverseEngineering:emer_init.self:Program_2 gitbrew.org::emer_init.self:Program_2] <br />
<pre>
<pre>
0x80308
0x80308
Line 1,152: Line 1,044:
0x66604200
0x66604200
</pre>
</pre>


----
----
== About RSX ==
<pre>
RAMIN is on VRAM.
0x28002010000 contains the same as 0x2808FF90000
0x28002050000 contains the same as 0x2808FFD0000
you can prove that by writing in one offset and reading the other
0x2808XXXXXXX is BAR1 (i.e. VRAM on Nvidia GPUs)
0x28002XXXXXX is BAR2 (i.e. PRAMIN on Nvidia GPUs)
</pre>
Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)