Commit graph

917 commits

Author SHA1 Message Date
Asahi Lina
825fbaf1ec m1n1.agx.initdata: Split buffer manager mappings between GPU/FW
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-07-11 01:49:13 +09:00
Asahi Lina
817b48dbc9 m1n1.fw.agx & co: Unbork a bunch of stuff on <G14X
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-07-11 01:49:13 +09:00
Asahi Lina
b270f2f86c m1n1.agx: Handle pending stamps properly for V13_5B4
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-07-11 01:49:13 +09:00
Asahi Lina
6761cd2d53 m1n1.fw.agx: Blit stuff for G14X
Just hacking on the structures to get it to dump, this probably broke
other firmware combinations...

Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-07-11 01:49:13 +09:00
Asahi Lina
788a5b9866 m1n1.trace.agx: Changes to unbreak G14X tracing
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-07-11 01:49:13 +09:00
Asahi Lina
40c9dfe128 m1n1.trace.agx: Skip tracing the stats queue
This is spammy and sometimes so slow it blocks forever. Let's explicitly
remove these ranges from the GPUVM tracer.

Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-07-11 01:49:13 +09:00
Asahi Lina
d743db30b6 m1n1.trace.agx: Add extra dumping around TVB control messages
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-07-11 01:49:13 +09:00
Asahi Lina
8ae5c219dc m1n1.trace.agx: Add support for dumping commands as json
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-07-11 01:49:13 +09:00
Asahi Lina
61678c4231 m1n1.fw.agx: Add compute changes for G14X
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-07-11 01:49:13 +09:00
Asahi Lina
34df83601c m1n1.fw.agx: Add TVB growth control messages
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-07-07 13:50:13 +09:00
Asahi Lina
9e63f885e9 m1n1.fw.agx.initdata: Add 13.5B4 G14X initdata changes
Simple for once!

Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-07-07 13:25:19 +09:00
Asahi Lina
6a149e5028 m1n1.constructutils: Improve json serialization of Value types
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-07-07 13:24:26 +09:00
Asahi Lina
311385e645 m1n1.trace.agx: Dump some buffers on G14X from register values
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-06-27 18:35:01 +09:00
Asahi Lina
6902cb6210 m1n1.trace.agx: Disable the ASC tracer after initdata is available
Since we directly trace the queue rptr/wptr memory locations, we don't
need the ASC tracing and this speeds things up quite a bit (without it,
Linux can get stuck in a pathological stats gathering loop without
making forward progress while traced).

Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-06-27 18:35:01 +09:00
Asahi Lina
b219bc318a m1n1.fw.agx: Fixes for V13_3
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-06-27 18:35:01 +09:00
Asahi Lina
b6dec2a644 m1n1.constructutils: Improve Rust export
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-06-27 18:35:01 +09:00
Asahi Lina
c2bbb41953 m1n1.fw.agx: More fixes for t602x stuff
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-06-27 18:35:01 +09:00
Asahi Lina
1c7131e26d m1n1.agx: T602x rendering changes
Too lazy to split this up...

Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-06-27 18:35:01 +09:00
Asahi Lina
af6b8c29a8 m1n1.constructutils: Fix array addressing bug
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-06-27 18:35:01 +09:00
Asahi Lina
b29c9734ad m1n1.adt: Add float parsing for *-kp-1 props.
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-06-27 18:35:01 +09:00
Asahi Lina
dabde44937 m1n1.fw.agx: Initdata setup & fixes for G14X/V13_3
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-06-27 18:35:01 +09:00
Asahi Lina
e4fa6048c2 m1n1.fw.agx: Add changes for G14X on 13.2 and 13.3
Still pending confirming 13.3 on other architectures...

Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-06-27 18:35:01 +09:00
Asahi Lina
d3e61153cc m1n1.trace.agx: Do not dump misc structs
These are no longer there with the register lists, and it's all
redundant anyway...

Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-06-27 18:35:00 +09:00
Asahi Lina
2dbbe6050d m1n1.fw.agx.initdata: T602x 13.3 initdata structure changes
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-06-27 18:35:00 +09:00
Asahi Lina
18005b0f73 m1n1.fw.agx.initdata: T602x 12.3 initdata structure changes
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-06-27 18:35:00 +09:00
Asahi Lina
83a2a6a9bc m1n1.adt: Add afr/cs perf state props
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-06-27 18:35:00 +09:00
Asahi Lina
0f1f3b23ee m1n1.trace.agx: Run the init_hook before the shell
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-06-27 18:35:00 +09:00
Asahi Lina
f7639885ce fw.agx.channels: Don't crash if meta_fn is None
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-06-27 18:35:00 +09:00
Hector Martin
a0d2ed20be payload: Do cpufreq init before smp_start_secondaries()
This also requires exporting this to the proxy so linux.py can use it.

Signed-off-by: Hector Martin <marcan@marcan.st>
2023-06-04 15:56:42 +09:00
Hector Martin
4124485265 hv: Make breadcrumbs per-CPU and introduce panic handler
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-06-03 12:47:39 +09:00
Hector Martin
db598aa4cf m1n1.hv: Fix register names
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-05-21 12:29:13 +09:00
Hector Martin
ae1bcd6fe2 m1n1.hv: Update IMPDEF reg names
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-05-06 00:51:30 +09:00
Hector Martin
6c005ddd49 asm: Fix replacing reg names that are substrings (DAIF etc)
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-05-06 00:51:05 +09:00
Hector Martin
ebd4613f61 proxy: Add smp_call[_sync]_el1 variants
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-05-05 00:31:05 +09:00
Hector Martin
54f44be7d6 hv_exc: Add hv_add_time() function & proxy thunk
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-04-26 00:51:51 +09:00
Hector Martin
06b732e788 smp: Add smp_stop_secondaries()
Doesn't work properly yet since we can't restart them...

Signed-off-by: Hector Martin <marcan@marcan.st>
2023-04-19 03:21:58 +09:00
Hector Martin
3288548faa utils: Add cpu_sleep() function
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-04-19 03:21:58 +09:00
Hector Martin
4638632657 hv: Implement emulated guest CPU shutdown
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-04-19 01:21:33 +09:00
Hector Martin
4d7b18d382 m1n1.proxy: Support negative arguments
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-04-19 01:02:03 +09:00
Hector Martin
a75afff83b hv_exc: Pass through dangerous CYC_OVRD writes to Python
This makes it easier to experiment with the sleep/WFI stuff.

Signed-off-by: Hector Martin <marcan@marcan.st>
2023-04-18 23:36:55 +09:00
Hector Martin
a1be8f233c m1n1.fw.smc: Add read32f()
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-04-18 22:09:07 +09:00
Hector Martin
7f9eaecbad m1n1.asm: Textually replace sysregs with their identifier
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-04-18 22:08:41 +09:00
Asahi Lina
8f6e13b170 firmware: Add 13.3
This has the same iBoot version as 13.3.1, so firmwares probably did not
change.

Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-04-18 20:45:10 +09:00
Hector Martin
9b7ae1b443 m1n1.fw.mtp: Fix parsing of init messages
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-04-16 21:23:46 +09:00
Hector Martin
36bcc36173 m1n1.fw.asc.oslog: Implement properly
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-04-16 21:23:46 +09:00
Asahi Lina
19e00f1f23 m1n1.hv: Remove __OS_LOG segments from coprocessors
These are supposed to be after the kernel, so we'd have to move them
for the guest to be able to access them. It seems things work if we just
delete those segments.

Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-04-16 21:23:46 +09:00
Hector Martin
ad53766d22 m1n1.fw.asc.{crash, ioreporting}: Do not align prealloc buffer sizes
On SMC on t602x, this is a small SRAM and we can run off the edge.

Signed-off-by: Hector Martin <marcan@marcan.st>
2023-04-12 00:40:06 +09:00
Hector Martin
aaeb3000e6 m1n1.hv: t6020 support
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-04-12 00:40:06 +09:00
Hector Martin
2389fa9d3d m1n1.adt: Fix parsing of template ADTs
Adding the speaker calibration stuff broke it because we try to parse
template values as real values. Don't do that.

Signed-off-by: Hector Martin <marcan@marcan.st>
2023-04-09 19:46:13 +09:00
Hector Martin
fe104d3848 m1n1.hv: Also hook ATC_AON device
It seems 13.2 is messing with this now.

Signed-off-by: Hector Martin <marcan@marcan.st>
2023-04-09 19:46:13 +09:00
Hector Martin
795211c534 m1n1.fw.dcp.ipc: More fields
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-04-09 19:46:13 +09:00
Mario Hros
693ebbae2b m1n1.hv: Support T6021 cpustart offset
Signed-off-by: Mario Hros <git@reversity.org>
2023-04-09 19:46:13 +09:00
Asahi Lina
0a05a0171e proxy: Add smp_is_alive() thunk
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-28 19:06:20 +09:00
Eileen Yoon
6ce14d8735 m1n1/ane: Initial commit
Signed-off-by: Eileen Yoon <eyn@gmx.com>
2023-03-28 17:10:15 +09:00
Hector Martin
43a737b608 m1n1.adt: Add speaker calibration parsing
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-03-11 20:09:57 +09:00
Asahi Lina
7ad099a5b6 m1n1.trace.agx: Add exploit mitigation
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
6d3e594903 m1n1.hv: Fix read-only or write-only hooks
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
5cacbdc501 m1n1.fw.agx.initdata: Define buffer manager ctl fields better
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
3548d4d210 m1n1.fw.ags.microsequence: Add more ops
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
e8377889d2 m1n1.proxyutils: Add 13.0 beta5/6 versions
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
c35168bb88 m1n1.hw.uat: Gracefully handle inaccessible page tables
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
b063fde19a m1n1.hw.uat: Support block maps
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
bfaf358f82 m1n1.agx.render: Add microsequence hooks
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
e49c90a314 m1n1.agx.context: Add GPUMicroSequence.cur_addr()
This requires that we pre-allocate the buffer

Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
586be52ec5 m1n1.trace.agx: Log structure UAT permissions as meta
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
b4c687ce13 m1n1.hw.uat: Add ioperm()
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
9a8da80e8d m1n1.trace.agx: Add exclude_context_id option
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
9e93bd70e4 m1n1.fw.agx: More compute and blit stuff
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
074892377c m1n1.fw.agx: Fix some more sequence number-ish field names
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
b7fb8d98d8 m1n1.agx: Increase available VM size and reduce usage
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
25813d91b4 m1n1.trace.agx: Disable RegionC tracing
The atomic stuff breaks with Linux right now...

Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
3e572aba4a m1n1.fw.dcp.ipc: Add compression info struct
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
813c545509 m1n1.fw.agx: Compute struct fixes for 13.2
Assuming these apply at 13.0b4 too...

Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
f01a62b7a1 m1n1.fw.agx.cmdqueue: Misc fixes
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
1400b50157 m1n1.fw.agx: Initial 13.2 structure changes
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
e22d2fe049 m1n1.hw.agx: Fix fault status register fields
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
e7dee84c3a m1n1.trace.agx: Misc TA/3D dump changes
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
7e49d104ea m1n1.trace.agx: Add compute tracing
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
8fba6118ce m1n1.fw.agx: Add missing compute stuff
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
89e3fcb2ab m1n1.trace.agx: Fix delayed ring buffer fetches
This should solve the issue where we see commands that the GPU has
already processed.

Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
37f9c5149c m1n1.proxyutils/constructutils: Add missing versions
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
3117cdef99 m1n1.fw.agx: Fixes for 13.0b4 support
Found while adding 13.2, but almost certainly mistakes from back when we
did 13.0b4.

Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Asahi Lina
91e0809063 m1n1.fw.agx: Misc initdata/etc fixes
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-03-06 15:15:17 +09:00
Janne Grunau
aaa04cfaba m1n1.trace.asc: Support tracing of a DART SID != 0
Required for DCP on M2.

Signed-off-by: Janne Grunau <j@jannau.net>
2023-01-28 10:48:46 +09:00
Janne Grunau
f8964ed0f9 m1n1.fw.asc: Increase DVA size to 36-bits
A single TTBR covers 36-bit address space with 16k pages. Necessary for
DCP on M2.

Signed-off-by: Janne Grunau <j@jannau.net>
2023-01-28 10:48:46 +09:00
Janne Grunau
39f933ec1f m1n1.fw.dcp.dcpep: DCPEp_SetShmem allows to query Shmem
When used with FLAG = 0, IOMFB replies with the current Shmem IOVA. It
is NULL on the first call and keeps the last set value. Updating it
seems to work without issues after shutdown.

Signed-off-by: Janne Grunau <j@jannau.net>
2023-01-28 10:48:46 +09:00
Janne Grunau
183991ca19 m1n1.hw.dart: Hide all DART variants behind common interface
Allows m1n1 experiments and tracers not to care about the DART variant.
Required to trace and experiment with DCP sanely on M1 and M2.

Signed-off-by: Janne Grunau <j@jannau.net>
2023-01-28 10:48:46 +09:00
Janne Grunau
bf73c1416a m1n1.fw.asc.ioreporting: Support IOP provided buffers
SMC provides buffer from its MMIO space. Since the macOS 13 SMC firmware
the firmware crashes when ACK-ing a GetBuf which provided a buffer.

Signed-off-by: Janne Grunau <j@jannau.net>
2023-01-28 10:46:45 +09:00
Hector Martin
46f2811351 m1n1.fw.dcp.iboot: Identify colorspace values
Signed-off-by: Hector Martin <marcan@marcan.st>
2023-01-22 23:57:41 +09:00
Asahi Lina
3d28ac4d6f tools/chainload.py: Properly sleep DCP when chainloading macOS
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-01-20 18:18:13 +09:00
Asahi Lina
7a92257d30 m1n1.agx.render: Change heap size to 0x200
This seems to be the AGX value

Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-01-20 18:18:13 +09:00
Asahi Lina
e774b5c521 m1n1.trace.agx: Log hook writes
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-01-20 18:18:13 +09:00
Asahi Lina
8e77f8f49f m1n1.fw.agx.channels: Do not require contiguous pages for channel state
Signed-off-by: Asahi Lina <lina@asahilina.net>
2023-01-20 18:18:13 +09:00
Martin Povišer
93c20e9395 m1n1.hv: Allocate virtio resources if unspecified
Signed-off-by: Martin Povišer <povik@cutebit.org>
2023-01-13 17:25:25 +09:00
Martin Povišer
020d86a23f m1n1.utils: Fix len() overflow in RangeMap
This is to fix

  OverflowError: Python int too large to convert to C ssize_t

in case the upper bound of a range is 1<<64.

Signed-off-by: Martin Povišer <povik@cutebit.org>
2023-01-13 17:25:25 +09:00
Martin Povišer
c760e02388 hv: Insert attached virtios into ADT
Signed-off-by: Martin Povišer <povik@cutebit.org>
2023-01-13 17:25:25 +09:00
Martin Povišer
d94f918433 m1n1.adt: Add to_bus_addr() method
So that one knows what to put in reg properties.

Signed-off-by: Martin Povišer <povik@cutebit.org>
2023-01-13 17:25:25 +09:00
Martin Povišer
6f460b1f6a m1n1.adt: Add create_node() method
Signed-off-by: Martin Povišer <povik@cutebit.org>
2023-01-13 17:25:25 +09:00
Martin Povišer
2b33d7f801 m1n1.adt: Implement 'in' keyword on ADT nodes
So that one can check for children, like:

  >>> "/arm-io/aic" in u.adt
  True

Signed-off-by: Martin Povišer <povik@cutebit.org>
2023-01-13 17:25:25 +09:00
Martin Povišer
0249d04a4b m1n1.adt: Add missing 'sys' import
Used for sys.stderr later on.

Signed-off-by: Martin Povišer <povik@cutebit.org>
2023-01-13 17:25:25 +09:00