Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
117 commits
Select commit Hold shift + click to select a range
a3237fa
cpu: keep every implemented VPN2 bit on the R10000 family
jamesbraid Oct 30, 2026
37988db
cpu: keep primary-cache diagnostic data on the R10000
jamesbraid Oct 30, 2026
b70fc40
isp1040: add the dual-channel ISP12160 part
jamesbraid Oct 30, 2026
6e53a3f
dp83843: add the Fuel Ethernet PHY
jamesbraid Oct 30, 2026
f15fc8b
timekeeper: add the M48T35 clock and NVRAM
jamesbraid Oct 30, 2026
7065010
ioc3: add the Fuel peripheral population
jamesbraid Oct 30, 2026
8f1097a
sflash: add the AMD command set
jamesbraid Oct 30, 2026
b9f650c
cpu: send uncached byte and halfword stores with the whole register
jamesbraid Oct 30, 2026
9470a4a
bedrock: add the node I/O, network, crossbar and local-bus blocks
jamesbraid Oct 30, 2026
8ee42e6
bedrock_pi: add processor control and interrupts
jamesbraid Oct 30, 2026
dde2166
bedrock_flash: add the Fuel boot flash windows
jamesbraid Oct 30, 2026
1812f58
xbridge: add the two-head Fuel PCI host bridge
jamesbraid Oct 30, 2026
e01c09c
l1: add the Fuel system controller
jamesbraid Oct 30, 2026
7cf7ec6
ohci: add the Lucent USB host controller and HID boot devices
jamesbraid Oct 30, 2026
3c75f07
fuel: add the serial IP35 machine
jamesbraid Oct 30, 2026
177d1da
pci: let functions choose header write policies
jamesbraid Oct 30, 2026
61b1c89
cpu: mask the R10000's secondary-cache tags
jamesbraid Oct 30, 2026
ef51332
cpu: add the R12000, R14000 and R16000 as selectable models
jamesbraid Oct 30, 2026
75bfe1f
ip35: fit the VPro board in the Fuel's graphics slot
jamesbraid Oct 30, 2026
34567be
docs: describe the Fuel machine
jamesbraid Oct 30, 2026
d5acb1b
cpu: apply FrameMask to EntryLo on a TLB write on the R10000 family
jamesbraid Oct 30, 2026
fe0f658
cpu: keep the upper word on a partial LWR on the R10000
jamesbraid Oct 30, 2026
6ce8918
cpu: cover the R10000 family's EntryLo PFN and uncached attribute
jamesbraid Oct 30, 2026
e8c86ee
cpu: carry the R10000 family's uncached attribute through mapped acce…
jamesbraid Oct 30, 2026
52d760a
bedrock_md: add the Fuel memory controller
jamesbraid Oct 30, 2026
b772d3f
bedrock_mem: take the bank sizes from the board
jamesbraid Oct 31, 2026
4c1b389
bedrock_flash: take the firmware record from the board
jamesbraid Oct 31, 2026
0bf8909
ioc4: add the IO9 peripheral controller
jamesbraid Oct 31, 2026
61708bc
bedrock_pi: model a four-slot CPU population
jamesbraid Oct 31, 2026
e44a522
ds1744: add the DS1744-compatible timekeeper
jamesbraid Oct 31, 2026
2e68426
ioc4: map the DS1744 clock into its BAR
jamesbraid Oct 31, 2026
4a012e0
ioc_serial_dma: name the shared engine after QEMU's
jamesbraid Oct 31, 2026
850ab96
pxbow: add the crossbow widget forwarding
jamesbraid Oct 31, 2026
8af65b7
bcm5701: add the controller's registers, PHY and EEPROM interface
jamesbraid Oct 31, 2026
292f354
deadline_timers: share the host-time timer slots of the IOC3 and IOC4
jamesbraid Oct 31, 2026
47340df
ns16550: hold a byte the backend refuses and retry it
jamesbraid Oct 31, 2026
eaecc64
ioc_serial_dma: wait for the UART's transmit-ready line
jamesbraid Oct 31, 2026
9863fd9
ioc_serial_dma: let a looped-back character take its character time
jamesbraid Oct 31, 2026
7ba42dc
ioc4: test receive-ring-full as a level
jamesbraid Oct 31, 2026
626e17f
xbow: time link resets and take warm resets through the fences
jamesbraid Oct 31, 2026
ec6fac5
bcm5701: add the descriptor engines and the network side
jamesbraid Oct 31, 2026
117194a
ioc_serial_dma: report idle from the engine's own transfers
jamesbraid Oct 31, 2026
1b91805
ioc4: test that a looped-back port drops host input
jamesbraid Oct 31, 2026
1d8ab1e
ioc3: move the serial ring engine into a module the IOC4 shares
jamesbraid Oct 31, 2026
0423861
ioc4: port the remaining ring register cases
jamesbraid Oct 31, 2026
a7bf554
bedrock_mem: describe the Tezro's memory as a typed population
jamesbraid Oct 31, 2026
c516ae2
bcm5701: fire timers at their own deadlines and drop frames on reset
jamesbraid Oct 31, 2026
caacd46
ioc3_kbc: move the PS/2 controller out of the IOC3
jamesbraid Oct 31, 2026
cefdcf9
bcm5701: port the remaining plain-memory qtests
jamesbraid Oct 31, 2026
4ded7dd
ioc4: add the PS/2 keyboard and mouse controller
jamesbraid Oct 31, 2026
9ce9056
ioc4: report DMA mode switches and stray register bits
jamesbraid Oct 31, 2026
81c34e8
ds1744: replay the QEMU model's register sequences as one table
jamesbraid Oct 31, 2026
a0212c3
l1: add the router brick reply and a configurable port speed
jamesbraid Oct 31, 2026
7e793fb
bedrock_mem: default the Tezro's memory to the 4 GiB layout
jamesbraid Oct 31, 2026
35504dd
pci: send only whole-dword configuration reads to a function's hook
jamesbraid Oct 31, 2026
fc1fcc6
pic: report each slot's REQ64# to its function as reset ends
jamesbraid Oct 31, 2026
3e7d6a1
bedrock_flash: seed the Tezro's configuration block once
jamesbraid Oct 31, 2026
8849fc9
ip35: share the Bedrock node builder between the IP35 boards
jamesbraid Oct 31, 2026
e5fe02d
bedrock_mem: count what a checked page costs to map
jamesbraid Oct 31, 2026
7321041
bedrock_mem: place and retire checked pages one at a time
jamesbraid Oct 31, 2026
eb1aa8e
bedrock_md: test stores to banks above 4 GiB and the PROM window
jamesbraid Oct 31, 2026
4a7e368
bedrock_md: bump the logical counters on bulk memory writes
jamesbraid Oct 31, 2026
17bdb2d
ip34_machine: name the Fuel's machine file after its board
jamesbraid Oct 31, 2026
37b36b5
tezro: add the machine with the one-processor board
jamesbraid Oct 31, 2026
eb4d753
bedrock_mem: take a region off the direct path without unmapping it
jamesbraid Oct 31, 2026
f08385f
pic: add the PCI host bridge
jamesbraid Oct 31, 2026
fee33f3
tezro: return lifted checked pages to the direct window from the poll
jamesbraid Oct 31, 2026
147ae98
ip35: restart the node on an L1 power cycle
jamesbraid Oct 31, 2026
75a25d3
config: take the Tezro's processor count from [machine] cpus
jamesbraid Oct 31, 2026
8f37896
ioc4: read 32-bit registers in the processor's byte order
jamesbraid Oct 31, 2026
57b5a0a
tezro: select the R16000 part by name
jamesbraid Oct 31, 2026
02493aa
tezro: fit the two- and four-processor board
jamesbraid Oct 31, 2026
179e86c
cpu: serve cached accesses from lines staged by Index Store Tag and Data
jamesbraid Oct 31, 2026
dc34c81
cpu: make a store to a staged line dirty and save staged lines
jamesbraid Oct 31, 2026
700db9d
cpu: test a compiled store to a staged line and run the JIT tests und…
jamesbraid Oct 31, 2026
a9b218b
clanker: record the staged secondary-line model and its limits
jamesbraid Oct 31, 2026
0ca6de4
pxbow: complete the PROM's writes to the error address registers
jamesbraid Oct 31, 2026
dc9034b
pic: let the BAR mapped last answer an overlapping access
jamesbraid Oct 31, 2026
a787fae
cpu: translate CACHE operands and index the secondary cache by physic…
jamesbraid Oct 31, 2026
0cf6dd8
tezro: keep a ledger of the V12's owed credits and settle it on a map…
jamesbraid Oct 31, 2026
3c5c09d
tezro: stop PI0's graphics slot below its bias, as the Bedrock does
jamesbraid Oct 31, 2026
d2b0743
cpu: serve fetches from lines staged in the primary instruction cache
jamesbraid Oct 31, 2026
c79ea57
cpu: decode predecoded primary instruction-cache words and check thei…
jamesbraid Oct 31, 2026
bd99aa3
ip35: refund the credit of a graphics store the bus refused busy
jamesbraid Oct 31, 2026
6d67b7c
cpu: decode the full predecode class table and refill the primary I c…
jamesbraid Oct 31, 2026
0094c70
pic: fail an unclaimed configuration read as a master timeout
jamesbraid Oct 31, 2026
624e1e7
tezro: put the second PIC on widget 0's crossbar
jamesbraid Oct 31, 2026
1bcb3ac
jitv2: compile a page through the view the CPU fetched it by
jamesbraid Oct 31, 2026
f95cacf
odyssey: let a widget-offset machine host the board, with credit acco…
jamesbraid Oct 30, 2026
dbb182a
cpu: let the decode cache read a page through the bus
jamesbraid Oct 31, 2026
b76eee2
pxbow: report identification word 0x3d100001
jamesbraid Oct 31, 2026
ea675f5
cpu: match the O2 memory alias after the physical address mask
jamesbraid Oct 30, 2026
e087959
xbow: test that a standalone Crossbow refuses both error address writes
jamesbraid Oct 31, 2026
cc6f728
tezro: test the one-node network reads and the PROM's crossbar check
jamesbraid Oct 31, 2026
ae6322a
ip35: share the widget DMA adapter between the IP35 boards
jamesbraid Oct 31, 2026
0523811
tezro: fit the VPro V12 at widget 12
jamesbraid Oct 31, 2026
263e445
tezro: compile the PROM's uncached code through the view it ran from
jamesbraid Oct 31, 2026
43cec4b
tezro: test that flushed overlay writes survive a power-off
jamesbraid Oct 31, 2026
a044fcd
docs: bring the Tezro guide up to date with the machine
jamesbraid Oct 31, 2026
eda475c
odyssey: let a node link its processor interfaces to the board
jamesbraid Nov 1, 2026
0e76a31
ip35: let a board count the processor's uncached I/O stores
jamesbraid Oct 31, 2026
980ab84
ip35: swap RAM outside the direct window through the cached view
jamesbraid Nov 1, 2026
b0bae58
bedrock_pi: let a board name the slots whose processors run
jamesbraid Nov 1, 2026
74d1eb9
ip35: answer the requester's own PI at the local register form
jamesbraid Nov 1, 2026
953c22d
bedrock_mem: keep a startup window for each processor
jamesbraid Nov 1, 2026
d3b15d1
smp: name the hold a board's boot rendezvous puts on a processor
jamesbraid Nov 1, 2026
cad379a
bedrock_lb, bedrock_io: let a node watch the PROM's rendezvous registers
jamesbraid Nov 1, 2026
9899b6c
ip35: hold a processor that reaches the PROM's boot rendezvous early
jamesbraid Nov 1, 2026
1f90151
tezro: run every fitted processor
jamesbraid Nov 1, 2026
0b57e18
tezro: log the NMI and stop requests CPU 0 cannot carry out
jamesbraid Nov 2, 2026
df847e9
bedrock_ni: read port status 1 on an uncabled one-node port
jamesbraid Oct 31, 2026
2f783be
bedrock_flash: seed a fresh store with environment records
jamesbraid Nov 2, 2026
0a47890
tezro: start the two-processor board with slots B and D disabled
jamesbraid Nov 2, 2026
a3f8b4f
ip35: log what restarts the node and each processor's startup window
jamesbraid Nov 2, 2026
c476528
cpu: choose the R10000 refill vector by address space
jamesbraid Nov 2, 2026
96709f9
cpu: invalidate overlapping TLB entries on a write on the R10000 family
jamesbraid Nov 2, 2026
8a0ef54
cpu: complete refused uncached stores on the R10000 family
jamesbraid Oct 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 101 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,75 @@ hashes are given where a change is easiest to understand by reading the commit.
the cost follows what the guest wrote. Reflinking is unchanged. On Windows the
copy is marked sparse first.

### R10000 TLB widths

- **Full 44-bit user addresses.** On the R10000 (Octane, IP28, and an O2 set to
`r10000`) EntryHi, the TLB match and the user-segment check keep VA bits 43:40;
they stopped at bit 39 before, so an address above 1 TiB took an Address Error.
The R4400 and R5000 are unchanged.
- **FrameMask (CP0 register 21)** on the R10000 clears the EntryLo bits it
names, 33:18, on every TLB write, so a kernel that keeps software flags there
gets the physical address it meant. The register read as zero and ignored
writes before. The R4400 and R5000 have none.
- **EntryLo** on the R10000 keeps its 28-bit PFN (bits 33:6, a 40-bit physical
address) and the uncached attribute in 63:62; it kept 30 bits before. The
attribute is stored and read back, not sent to the bus.
- **TLB writes on the R10000** store zeros in the PFN bits below the page size,
so TLBR reads them back as zero, as the part does; on 16 KB pages that is
EntryLo bits 7:6. Translation is unchanged. The PROM's `ide` `tlb` test
failed 320 compares on this. The manual documents it for the R10000; the
R12000, R14000 and R16000 do the same as a model choice. The R4400 and
R5000 still keep the whole PFN.
- **TLB refill vector on the R10000** follows the address space that missed:
a user address takes the XTLB vector only with UX set, xsseg with SX, and
kernel addresses with KX. A 64-bit kernel touching a 32-bit user address now
refills through 0x000, as the part does, not 0x080. The R4400 and R5000 still
choose by the current mode.

### Refused uncached stores on the R10000 family

- On the R10000 family (Octane, IP28, O2), an uncached store that nothing answers now
completes instead of raising a Data Bus Error, as the processor does. iris prints
"Unsupported uncached write ... (posted, completes)" for the first four such
stores and then at each power of two. Loads, instruction fetches, the R4400 and
the R5000 are unchanged.

### Partial LWR on the R10000

- On the R10000 (Octane, IP28, and an O2 with the R10000), an `LWR` that loads fewer
than four bytes now keeps bits 63:32 of the destination instead of sign-extending,
as the reference results for the part show. R4400 and R5000 machines are unchanged.
The JIT matches the interpreter, and the code-cache key changes only for the
machines that have the behaviour.

### R10000 cache operations

- **Index Load Data and Index Store Data** on the R10000's primary caches keep their
data (they read back zero before). The secondary cache's data slot is the address
shifted right by 3 instead of 4: one slot per doubleword.
- **Secondary-cache tags** on the R10000 family read the reserved bits (TagLo 9, 12, 13 and
TagHi 30:4) as zero; the MRU bit and the other tag fields are kept.

### R12000, R14000 and R16000

- `[machine] cpu` and `--cpu` take `r12000`, `r14000`, `r16000` (revision 2.2,
the 800 MHz part) and `r16000_700` (revision 2.1, the 700 MHz part). The Octane
takes the R10000, R12000 and R14000 (defaulting to 195, 360 and 600 MHz), the
O2 the R5000, R10000 and R12000 (400 MHz for the R12000), the IP28 the R10000.
The R16000 has no machine yet; `iris-bench` is its only user. CP0 Config now
reports the part's own secondary-cache size, where every part read 1 MB, and
each R16000 presents its own reset word.

### SGI Tezro (IP53 board, IP35 software platform)

- Added a headless Tezro profile with the 700 MHz R16000 (`r16000_700`, the default; `r16000` selects the 800 MHz part), 4 MiB cache, 4 GiB RAM, a PIC with PXBOW, and the IO9's IOC4, ISP12160 and BCM5701; see the [Tezro guide](docs/tezro-ip53.md).
- A Tezro can fit a VPro V12 at widget 12 with `[graphics] board = "v12"`, on the VPro model the Octane and the Fuel use.
- A Tezro fits one, two or four processors, four by default, and two or four bring a second PIC at widget 11 on the PXBOW's link 11. Every fitted processor runs, each on its own host thread, so a default four-processor Tezro runs four.
- A fresh flash store for a two-processor Tezro is seeded with the environment records that mark the empty B and D slots disabled, as QEMU's boot tests seed them; this is a model policy, not a factory image.
- The Tezro's PIC fails a configuration read of an empty slot as a master timeout, so the PROM no longer records two phantom devices per empty slot.
- The Tezro returns the V12's graphics credits to PI0 along the node's graphics map, settles owed credits on a map write, and stops PI0's graphics slot below its bias as the Bedrock does.
- The Tezro's PROM stops while copying itself to memory unless the R10000 cache index operations are present; see the [Tezro guide](docs/tezro-ip53.md).

### `IRIS_GUI_GL` works in iris-gui

- The GUI's GL capture path (`IRIS_GUI_GL=1`, or `[debug] gui_gl_capture`) never
Expand Down Expand Up @@ -203,6 +272,35 @@ hashes are given where a change is easiest to understand by reading the commit.
- Memory past 4 GB is as fast as the rest: such a machine gets a 16 GB direct
window, and the JIT compiles code anywhere in it.
- A store-conditional on memory outside the window is now atomic with two CPUs.
### SGI Fuel (IP34 board, IP35 software platform)

- **The Fuel takes a VPro board**: `[graphics] board = "v12"` or `"v10"`
fits the Octane's VPro model at crossbar widget 13. IRIX 6.5.30 with the
VPro driver brings the X login screen up on it.

- Added a headless Fuel profile with the 500 MHz R14000, 512 MiB RAM,
Bedrock, dual-head XBridge, IOC3 networking and two-channel ISP12160 SCSI.
The normal interpreter boot reaches the IRIX 6.5.30 root shell with PROM
6.210. See the [Fuel guide](docs/fuel-ip34.md).
- **jitv2 compiles uncached code from the uncached view.** The PROM runs from the
reset window uncached; once memory covers that window the cached view returns
RAM there, and the compile pool used to compile RAM's bytes in place of the
PROM's. An uncached fetch now keys a code page of its own and is compiled and
invalidated through the view the CPU fetched it by. Other machines are
unchanged.
- Marking an ECC doubleword or a directory line in Bedrock's memory no longer
rebuilds the whole memory map. The PROM's memory test marks and lifts a few
hundred of them thousands of times. A mark now changes only its own page,
and a lifted mark's page stays on Bedrock's checking path until a batch
returns it.

### PCI configuration

- A PCI function can describe its own writable header fields and
write-one-to-clear status bits. Byte and halfword configuration writes
through a Bridge carry their byte enables, so such a function keeps the
status events a narrow write did not select. No Octane function has
write-one-to-clear status bits, so the Octane behaves as before.

### VNC, and screen and pointer commands

Expand Down Expand Up @@ -513,6 +611,9 @@ hashes are given where a change is easiest to understand by reading the commit.

### SGI O2 (IP32)

- **The O2's memory alias holds for pages with high PTE bits set.** A mapped page
whose address had a bit set above bit 31 missed the alias of RAM at
0x8000_0000 and reached the PCI window instead.
- **The O2 runs on the shadow cache from reset.** The full cache model, and
the switch to and from it during POST and reboots, are gone
(`src/ip32_handover.rs`), and with them a branch on every cached load, store
Expand Down
54 changes: 46 additions & 8 deletions FEATURES.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,15 +170,53 @@ the first `[section]`, because TOML tables continue until the next header.

| Key | Default | Values and behavior |
|---|---|---|
| `machine.profile` | `indy_ip24` | indy_ip24, indigo2_ip22, indigo2_ip28, o2_ip32 (configured by `[o2]`, see [the O2 guide](docs/o2-ip32.md)), octane_ip30 (configured by `[octane]`, see [the Octane guide](docs/octane-ip30.md)). |
| `machine.cpu` | `r4400` | r4400, r5000, r10000; CPU/ISA choice is independent of build features. An O2 takes r5000 or r10000 (an r4400 is refused when the machine is built); the Octane is r10000 only. |
| `machine.cpus` | `1` | Processors fitted. 2 only on the Octane; see [its guide](docs/Octane/multiprocessor.md). |
| `machine.profile` | `indy_ip24` | indy_ip24, indigo2_ip22, indigo2_ip28, o2_ip32 (configured by `[o2]`, see [the O2 guide](docs/o2-ip32.md)), octane_ip30 (configured by `[octane]`, see [the Octane guide](docs/octane-ip30.md)), fuel_ip34 (see [the Fuel guide](docs/fuel-ip34.md)), tezro_ip53 (configured by `[tezro]`, see [the Tezro guide](docs/tezro-ip53.md)). |
| `machine.cpu` | `r4400`; a Fuel with no `cpu` runs `r14000` and a Tezro `r16000_700` | r4400, r5000, r10000, r12000 (Octane, O2), r14000 (Octane, Fuel), r16000 (800 MHz, Tezro), r16000_700 (700 MHz, Tezro). CPU/ISA choice is independent of build features. A Fuel always runs its one R14000: set `r14000` (`r10000`, the family, is also accepted); any other value is refused. A Tezro runs an R16000 with a 4 MB secondary cache: `r16000_700` (the 700 MHz part, the default) or `r16000` (the 800 MHz part, four processors only); `r10000`, the family, takes the 700 MHz part. Any other value is refused, and so is the 800 MHz part with an 8 MB secondary cache (QEMU's `r16000-800mhz-8mb-rev22`), which has no model. The Tezro's clock follows the part. |
| `machine.cpus` | `1`; `4` on the Tezro | Processors fitted. 2 on the Octane; see [its guide](docs/Octane/multiprocessor.md). 1, 2 or 4 on the Tezro, each run on its own host thread; one selects the one-processor board with one PIC, two or four the board with two PICs. |

### [fuel]

Fuel-specific settings apply when `machine.profile = "fuel_ip34"`.

| Key | Default | Values and behavior |
|---|---|---|
| `flash` | unset | Persistent 16 MiB boot-flash file. Unset, the flash is volatile. |
| `console` | `l1` | `l1`, `ioc3a` or `ioc3b`. Selects the guest console connection. |
| `l1_port` | `8882` | Host TCP port for the L1 console. Used when `console = "l1"`. |
| `l1_log` | unset | Optional serial log path for L1 output when an IOC3 port is selected as console. |
| `l1_revision` | `1.48.1` | L1 firmware revision as `major.minor.patch`, decimal. The guest reads it with L1 request `0x0005`. |
| `brick_serial` | `EMUN00` | L1 brick serial, at most 37 bytes. The guest reads it with L1 request `0x0004`. The default is a marked synthetic serial, not a real one. |

The machine uses one 500 MHz R14000 and fixed 512 MiB RAM in two 256 MiB
banks. Its IOC3 has no keyboard or mouse ports, so it runs on a serial
console. A `[fuel]` table is written to a saved config only when one of
these keys is set. The sample configuration and supported PROM inputs are in the
[Fuel guide](docs/fuel-ip34.md).

### [tezro]

Tezro-specific settings apply when `machine.profile = "tezro_ip53"`.

| Key | Default | Values and behavior |
|---|---|---|
| `flash` | unset | Persistent 16 MiB boot-flash file. Unset, the flash is volatile. |
| `console` | `l1` | `l1`, `ioc4_a`, `ioc4_b`, `ioc4_c` or `ioc4_d`. Selects the guest console connection. |
| `l1_port` | `8882` | Host TCP port for the L1 console. |
| `l1_log` | unset | Optional serial log path for L1 output when an IOC4 port is selected as console. |
| `serial_port_c`, `serial_port_d` | `8883`, `8884` | Host TCP ports of IOC4 ports 2 and 3; ports 0 and 1 use `serial_port_a` and `serial_port_b`. |

The machine runs the 700 MHz R16000 (`r16000_700`, the default) or the 800 MHz
one (`r16000`), each with a 4 MiB secondary cache. `banks`
takes 512 or 1024 MiB banks from bank 0; left unset, it is the 4 GiB layout of
1024, 1024 and four 512 MiB banks. A `[tezro]` table is written to a saved
config only when one of these keys is set. See the
[Tezro guide](docs/tezro-ip53.md), which lists its limits.

### [graphics]

| Key | Default | Values and behavior |
|---|---|---|
| `graphics.board` | `newport`; `solidimpact` on the Octane | newport, xz, extreme, solidimpact, highimpact, maximpact, v6, v8, v10, v12, none. Extreme is Indigo2 only. The Octane takes only `solidimpact` (SI), `highimpact` (SI with texture option), `maximpact` (MXI), `v6`, `v8`, `v10`, `v12` (the VPro boards, also `vpro:v12` and so on; need an IRIX install with the VPro driver, IRIX 6.5.10 or later and PROM 4.0, or 4.5 for the V10 and V12, which shipped only in the Octane2 and so give the machine the Octane2's Crossbow 1.4 and Bridge revision) or `none` (no board: the machine runs on its serial console, with no window). |
| `graphics.board` | `newport`; `solidimpact` on the Octane | newport, xz, extreme, solidimpact, highimpact, maximpact, v6, v8, v10, v12, none. Extreme is Indigo2 only. The Octane takes only `solidimpact` (SI), `highimpact` (SI with texture option), `maximpact` (MXI), `v6`, `v8`, `v10`, `v12` (the VPro boards, also `vpro:v12` and so on; need an IRIX install with the VPro driver, IRIX 6.5.10 or later and PROM 4.0, or 4.5 for the V10 and V12, which shipped only in the Octane2 and so give the machine the Octane2's Crossbow 1.4 and Bridge revision) or `none` (no board: the machine runs on its serial console, with no window). The Fuel takes `v12` or `v10` in its graphics slot, or `none`, its default. The Tezro takes `v12` at widget 12, or `none`, its default. |
| `graphics.heads` | `1` | 1 or 2; dual-head requires Newport. |
| `graphics.resolution` | `guest` | guest, 1024x768, 1280x960, 1280x1024; presets require Newport. |

Expand Down Expand Up @@ -209,7 +247,7 @@ An explicit non-disk kind takes precedence over the legacy cdrom flag.

| Key | Default | Values and behavior |
|---|---|---|
| `network.mode` | `nat` | nat, pcap, stream or off (no Ethernet; O2 and Octane only). Stream needs `network.stream`. PCAP needs build support and host capture permissions. PCAP works on every Ethernet; stream on every onboard one, not on a DaynaPort. |
| `network.mode` | `nat` | nat, pcap, stream or off (no Ethernet; O2, Octane and Fuel only). Stream needs `network.stream`. PCAP needs build support and host capture permissions. PCAP works on every Ethernet; stream on every onboard one, not on a DaynaPort. |
| `network.stream` | `unset` | `tcp:IP:PORT` or `unix:PATH`: the server of the private segment for `mode = "stream"` (QEMU `-netdev stream` framing). See NETWORKING.md. |
| `network.pcap_interface` | `auto-pick when unset` | Interface name or numeric list index; PCAP only. |
| `network.nfs_pcap_ip` | `unset` | Virtual LAN IP for the built-in NFS responder in PCAP mode. |
Expand Down Expand Up @@ -373,8 +411,8 @@ IP22/IP24 four-bank IRIX 6.5 behavior remains separate from IP28's verified
two-bank 1 GB layout. Extreme requires IP22. All non-Newport boards require
`heads=1` and `resolution="guest"`. IP28 IRIX needs IMPACT; its PROM has an
embedded fallback.
The config validator permits SCSI controller 1 only on IP22, the O2 and the
Octane, the machines with two controllers.
The config validator permits SCSI controller 1 only on IP22, the O2, Octane
and Fuel. These machines have two controllers.

Standalone CLI options update the loaded config where supplied; boolean enable
switches do not provide a general way to clear every saved true setting.
Expand Down Expand Up @@ -427,7 +465,7 @@ iris-gui does not parse this standalone option set; use its named-machine UI.
| `--list-net-interfaces` | Print the host network interfaces libpcap can bridge onto, then exit. Requires a build with --features pcap. |
| `--no-scsi-deferred-int` | Disable deferred SCSI status interrupts (default: enabled for OpenBSD/NetBSD compatibility). |
| `--cpu` | Emulated CPU: `r4400` (default), `r5000`, or `r10000`. Overrides `[machine] cpu`. |
| `--graphics` | Graphics board: `newport` (default), `xz`, `extreme`, `solidimpact`, `highimpact`, `maximpact` (or `impact:solid`, `impact:high`, `impact:max`), `v6`, `v8`, `v10`, `v12` (`vpro:v12` and so on, Octane only). |
| `--graphics` | Graphics board: `newport` (default), `xz`, `extreme`, `solidimpact`, `highimpact`, `maximpact` (or `impact:solid`, `impact:high`, `impact:max`), `v6`, `v8`, `v10`, `v12` (`vpro:v12` and so on; Octane, and `v10`/`v12` on the Fuel). |
| `--gdb-port` | Enable GDB stub on the given TCP port (e.g. --gdb-port 1234). Connect with: target remote localhost:<port> |
| `--monitor-port` | Monitor console port on 127.0.0.1 (default 8888). Give each iris running at once its own. |
| `--vnc [ADDR]` | Serve the screen, keyboard and mouse over VNC on ADDR (`host:port` or a port; default 127.0.0.1:5900). Sets `vnc.listen`. |
Expand Down
Loading
Loading