The repository appears to be an area of storage for use by the Hypervisor. 256-bit keys are used to reference 128-bit values stored in the repository. Functions exist to create, get, modify and remove repository nodes.
See notes below for usage speculation.
status = lv1_get_repository_node_value(/*IN*/ lpar_id, n1, n2, n3, n4 /*OUT*/ &v1, &v2 );
| Inputs | |
|---|---|
| Register | Description |
| R3 | logical partion id |
| R4 | top level key |
| R5 | 2nd level key |
| R6 | 3rd level key |
| R7 | 4th level key |
| Outputs | |
| Register | Description |
| R3 | Status: 0 = OK, -6 = LV1_NO_ENTRY |
| R4 | value 1 |
| R5 | value 2 |
Notes:
The logical partition id is also required as an input parameter to get a repository node value, but this parameter does not appear to be passed when creating, modifying or removing nodes.
There are instances in the Kernel code where the keys are constructed from string values, which appear to follow a 4-level key/subkey hierarchy.
Calling lv1_get_repository_node_value for the node ‘bi.pu.#1.rm_size’ produces the following result:
| bi.pu.(1).rm_size - Real mode memory size | |||
|---|---|---|---|
| Register | Hex value | Value | Comment |
| R3 | 0000000000000002 | (2) | PS3_LPAR_ID_CURRENT |
| R4 | 0000000062690000 | ....bi.. | boot info? |
| R5 | 7075000000000000 | pu...... | processor unit |
| R6 | 0000000000000001 | ........ | pu id (1) |
| R7 | 726d5f73697a6500 | rm_size. | real mode size |
| Outputs | |||
| R3 | 0000000000000000 | (0) | LV1_SUCCESS |
| R4 | 0000000008000000 | (134217728) | 128 Mb |
| R5 | 0000000000000000 | (0) | |
Other nodes referenced in “repository.c”:
| lpar_id = PS3_LPAR_ID_CURRENT (0×2) | |||
|---|---|---|---|
| Node | v1 | v2 | Comment |
| bi.spun.#0.#0 | 0000000000000006 (6) | 0 (0) | number of physical spus reserved |
| bi.spursvn.#0.#0 | 0000000000000006 (6) | 0 (0) | number of spu resource reservations |
| bi.spursv.(0..5).#0 | 8000000000000000 (PS3_SPU_RESOURCE_TYPE_EXCLUSIVE) | (0..5) | spu resource reservation id value |
| bi.boot_dat.address.#0 | 0000000007fff000 (134213632) | 0 (0) | boot data address |
| bi.boot_dat.size.#0 | 0000000000000800 (2048) | 0 (0) | boot data size |
| bi.pu.(1).rm_size | 0000000008000000 (134217728) | 0 (0) | real mode limit |
| bi.rgntotal.#0.#0 | 000000000f800000 (260046848) | 0 (0) | max memory size |
| lpar_id = PS3_LPAR_ID_PME (0×1) | |||
|---|---|---|---|
| Node | v1 | v2 | Comment |
| ben.#0.#0.#0 | 0000000000000001 (1) | 0000000000000000 (0) | Unused - in function “ps3_repository_read_num_be” |
| be(0).#0.#0.#0 | 0000000000000000 (0) | 0000000000000000 (0) | be node id (used to retrieve clock freq) |
| be.(0).clock.#0 | 0000000004c1a6c0 (79800000) | 0000000000000000 (0) | decrementer frequency (3.2 Ghz / 40) |
Another nodes:
| lpar_id = PS3_LPAR_ID_PME (0×1) - FW 3.15 PAL 60GB PS3, First Generation (Fat) | |||
|---|---|---|---|
| Node | v1 | v2 | Comment |
| sys.flash.fmt.#0 | 00000000000001 (1) | 00000000000000 (0) | Flash format ? |
| sys.hw.config.#0 | 20000000fffffeff | 00000000000000 (0) | 0×20000000000000 mask + something |
| sys.flash.ext.#0 | 000000000000ff (255) | 00000000000000 (0) | – |
| plat.id.#0.#0 | 436f6b4231300000 (ASCII‘CokB10’) | 00000000000000 (0) | Platform ID |
| sys.ac.sd.#0 | 00000000000000 (0) | 00000000000000 (0) | – |
| sys.flash.boot.#0 | 00000000000000 (0) | 00000000000000 (0) | – |
| be.0.lpm.priv | 00000000000002 (2) | 00000000780101 (7864577) | – |
| rsx.rdcy.1.#0 | ffff0d020a02ffff | 00000000000000 (0) | – |
| rsx.rdcy.2.#0 | ffffffffffffffff | 00000000000000 (0) | – |
| rsx.rdcy.3.#0 | 00000000000000 (0) | 00000000000000 (0) | – |
| rsx.rdcy.4.#0 | 00000000000000 (0) | 00000000000000 (0) | – |
| rsx.rdcy.5.#0 | 00000000000000 (0) | 00000000000000 (0) | – |
| rsx.rdcy.6.#0 | 00000000000000 (0) | 00000000000000 (0) | – |
| rsx.rdcy.7.#0 | 00000000000000 (0) | 00000000000000 (0) | – |
| rsx.rdcy.8.#0 | 00000000000000 (0) | 00000000000000 (0) | – |
| mu.1.size.#0 | 00000010000000 (268435456) | 00000000000000 (0) | – |
| be.0.tb_clk.#0 | 00000004c1a6c0 (79800000) | 00000000000000 (0) | – |
| be.0.nclk.#0 | 000000be420e00 (3192000000) | 00000000000000 (0) | – |
| ios.net.eurus.lpar | 00000000000000 (0) | 00000000000000 (0) | – |
| sys.syscon.pversion.#0 | 00000000000001 (1) | 00000000000000 (0) | – |
| sys.param.load.rom1st | 00000000000001 (1) | 00000000000000 (0) | – |
| lv1.maxplgid.#0.#0 | 00000000000100 (256) | 00000000000000 (0) | – |
| lv1.specver.#0.#0 | 00000300010005 | 00000000000000 (0) | Matches firmware 3.1.5 |
| lv1.buildid.#0.#0 | 00000000000000 (0) | 00000000000000 (0) | – |
| lv1.ts.size.#0 | 00000000000000 (0) | 00000000000000 (0) | – |
| lv1.ts.start.#0 | 00000010000000 (268435456) | 00000000000000 (0) | – |