Commit graph

1291 commits

Author SHA1 Message Date
Asahi Lina
f92be5a076 experiments/agx_parallel.py: Uncomment some power-related tracers
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
f6dad68156 m1n1.fw.agx.initdata: Disable KTrace by default
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
20fce92280 m1n1.trace.agx: Disable some hex dumps
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
b8bf3f485e m1n1.trace.agx: Various UAT related improvements
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
a097e5b744 m1n1.trace.agx: Instantiate SGXRegs
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
621e7b535a m1n1.fw.agx: Misc structure tweaks
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
2978f246f2 m1n1.agx.render: PowerVR style tile param calculation
Also document some other registers

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
c72b6ce98c m1n1.hv: Translate DC CIVAC argument if trapped
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
633e551c2d m1n1.agx.object: Support reading back directly from physmem
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
bc99d3411a m1n1.agx.context: Fix blocklist indexing
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
5e39db820b m1n1.agx: Only try to decode fault if fault happened
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
1f28498b0a m1n1.hw.agx: Export R_FAULT_INFO
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
b8f9008953 m1n1.hw.uat: Show context ID in exceptions
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
b04cc0c7c8 m1n1.hw.uat: Document attribute indexes
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
6a0008884d m1n1.agx: Add an initdata hook
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Hector Martin
9e2eeeb911 hv/trace_pmgr.py: Get rid of pwrgate stuff
It's broken

Signed-off-by: Hector Martin <marcan@marcan.st>
2022-12-04 13:10:59 +09:00
Janne Grunau
71baff4adc experiments/dcp.py: Set the display with surface swap
Needs testing on DP/HDMI outputs.

Signed-off-by: Janne Grunau <j@jannau.net>
2022-11-29 01:36:14 +09:00
Janne Grunau
7d9608adc4 m1n1.fw.dcp.manager: Add backlight callbacks
DCP reports the display brightness with
PropRelay::pr_publish(prop_id=15, value=...). The value divided by
"Brightness_scale" appears to be the display brightness in nits.
Add other callbacks encountered on j314c.

Signed-off-by: Janne Grunau <j@jannau.net>
2022-11-29 01:36:14 +09:00
Janne Grunau
6aa1da3c31 m1n1.fw.dcp.ipc: Annotate backlight fields in swap_rec
Allows brightness control of integrated displays.

Signed-off-by: Janne Grunau <j@jannau.net>
2022-11-29 01:36:14 +09:00
Janne Grunau
98e8e48171 experiments/dcp.py: Add set_digital_out_mode call
Initializes the display if not already done by iboot/m1n1. Not expected
to change anything for disp0 but might be helful in bringing DP alt
mode for dispexp[0-7].

Signed-off-by: Janne Grunau <j@jannau.net>
2022-11-29 01:36:14 +09:00
Janne Grunau
053eb7bfda experiments/dcp.py: Handle external displays correctly
Pass disp0's comaptible string to DCPManager.
Fixes Mac Studio and M1 Macbook handling.

Signed-off-by: Janne Grunau <j@jannau.net>
2022-11-29 01:36:14 +09:00
Janne Grunau
452a3243c0 m1n1.fw.dcp.manager: Add SetDigitalOutMode convenience function
This prints the selected modes. In addition omits printing the whole
DCPAVProps.

Signed-off-by: Janne Grunau <j@jannau.net>
2022-11-29 01:36:14 +09:00
Janne Grunau
dc3397888d m1n1.fw.dcp.manager: Add update_backlight_factor_prop call back
Signed-off-by: Janne Grunau <j@jannau.net>
2022-11-29 01:36:14 +09:00
Janne Grunau
aa7088f3fb m1n1.fw.dcp.manager: Support 't600x' in rt_bandwidth_setup_ap
Signed-off-by: Janne Grunau <j@jannau.net>
2022-11-29 01:36:14 +09:00
Janne Grunau
e91cc63708 m1n1.fw.dcp.manager: Fix swap_complete_intent_gated after fb49d88d90
Signed-off-by: Janne Grunau <j@jannau.net>
2022-11-29 01:36:14 +09:00
Martin Povišer
de0c0323a5 experiments/mmio_sweep.py: Patch in AOP power-domains on t6000
The ADT lacks some of the info on AOP power domains on t6000, so fill
that in manually.

Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
fc66046d76 experiments/aop.py: Extend AOP experiment, add tracer
The AOP uses an 'EPIC' protocol similar to the one other coprocessor
firmware is using but not in the exact same version. Add code for
tracing the AOP calls and extend the aop.py experiment with the client
side of it. Include description of audio calls and some other calls
related to sensor discovery.

Furthermore, in experiments/aop.py, do some AOP audio setup. Once that
is done we can start streaming samples from the internal microphones by
making what AOP considers power state adjustment calls. That is, we
adjust the power state of a 'hpai' device, first to a 'pw1 ' stage,
then to 'pwrd' stage.

So, to see microphone samples, enter the AOP experiment shell first:

  $ M1N1DEVICE=/dev/ttyACM0 experiments/aop.py

Within the shell, adjust the power state of 'hpai':

  >>> aop_set_audio_pstate('hpai', 'pw1 ')

At that point /arm-io/admac-aop-audio powers up. In parallel to the AOP
shell, we can start tools/admac_stream.py on the just powered-up ADMAC
instance:

  $ M1N1HEAP=0x10010000000 M1N1DEVICE=/dev/ttyACM1 tools/admac_stream.py \
        --node admac-aop-audio --channel 1 -v | xxd -g 4 -c 12 -e

Returning back to the AOP shell, we can then set 'hpai' to 'pwrd' state
to kick off the streaming:

  >>> aop_set_audio_pstate('hpai', 'pwrd')

By that point, we should see samples coming out on the ADMAC end. The
samples are 32-bit floats packed in groups of three in a frame, e.g.

00000000: ba7ac6a7 ba32d3c3 baa17ae2  ..z...2..z..
0000000c: 38ccea5f b99c1a37 ba0c4bb1  _..87....K..
00000018: 39d2354f 3964b5ff 39b209fb  O5.9..d9...9
00000024: b96a1d1f 39c8503f 3958fc4f  ..j.?P.9O.X9
00000030: b6b1f5ff 39c72b8f 39bbe017  .....+.9...9
0000003c: 3a912de5 36dd4f7f 37f1147f  .-.:.O.6...7

This has been tested and will to some degree be specific to 2021 Macbook
Pro (t6000). Differences on other models TBD (at the very least the
number of microphones can be presumed different).

Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
a8ef753520 m1n1.fw.aop: In AOPBase only refer to ProxyUtils attribute
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
abd0c2ac3c m1n1.fw.aop: Tweak bootargs diff format
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
2bacc044e8 m1n1.fw.aop: Move bootargs helpers to new class AOPBase
The new class can possibly be shared between the m1n1 AOP tracer and
AOP client.

Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
6ad59beb0c experiments/aop.py: Allocate oslog buffer on request
We need to allocate a buffer for the AOP on the OSLog endpoint for it to
fully boot. Copy in a modified version of the general OSLog endpoint
driver to do that.

Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
f87d65a971 experiments/aop.py: Make _bootargs_span a property
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
1d2a157fe8 m1n1.fw.aop: Split off ASCArgumentSection from experiments/aop.py
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
79890a15d6 experiments/aop.py: Work around ADT inconsistencies
In t6000 ADT, the AOP SRAM base is specified *including* the bus offset
where the bus offset isn't expected, so our decoding of it includes the
bus offset twice. Patch it.

Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
b6ae985377 m1n1.fw.afk: Accept AOP buffer magic
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
8347301eff m1n1.hw.adt: Add prop parsing rules related to AOP audio
We need to adapt the prop-parsing logic to give precedence to path
matching over name matching, since otherwise the audio-* rule (which is
already in the list) catches (...)/aop-audio/audio-pdm2. We want that
to fall under *aop-audio* rule instead.

Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
fcf6170a9f m1n1.proxyutils: Accept M1N1HEAP environment variable
Let user override the proxyutils heap base for concurrent running of two
proxyclient sessions.

Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
d735d6ad49 m1n1.hw.dart: Pass in kwargs arguments of from_adt()
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
9a93d5c307 m1n1.trace: Drop stale super().__init__() call
The Reloadable parent doesn't have an __init__ method, so calling the
super may call at unexpected places in richer inheritance hierarchies.

Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
c5e80f0d5a m1n1.fw.afk: Fix TX/RX_BUFSIZE confusion
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
ce517b10a3 tools/admac_stream.py: Add tool for engaging ADMAC
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
8ff430aefa m1n1.hw.admac: Add CHAN_SRAM_CARVEOUT registers
The new registers contain SRAM limits allocated to each channel.

Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
1836913ef6 m1n1.utils: Accept 'base' in chexundump
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
e03603df35 m1n1.utils: Skip empty lines on chexundump input
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
Martin Povišer
f83af93c05 m1n1.utils: Fix chexundump exception
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-11-04 12:36:49 +09:00
R
9a23d55b83 scaler: Can scale W larger
Signed-off-by: R <rqou@berkeley.edu>
2022-11-04 12:32:23 +09:00
R
642f3af5e8 scaler: Basic scaling kinda works
Signed-off-by: R <rqou@berkeley.edu>
2022-11-04 12:32:23 +09:00
R
fc6378a86a scaler: Imports from RE
Signed-off-by: R <rqou@berkeley.edu>
2022-11-04 12:32:23 +09:00
R
8cea72dfab scaler: clarify flip/rotate
Signed-off-by: R <rqou@berkeley.edu>
2022-11-04 12:32:23 +09:00
R
a10865bf11 scaler: Understand most basic of w/h
Signed-off-by: R <rqou@berkeley.edu>
2022-11-04 12:32:23 +09:00
R
31c80bca04 scaler: work out flip/rotate
Signed-off-by: R <rqou@berkeley.edu>
2022-11-04 12:32:23 +09:00
R
7559de8705 scaler: Can copy data without changing
Signed-off-by: R <rqou@berkeley.edu>
2022-11-04 12:32:23 +09:00
R
84e13c7967 scaler: add some unknown regs near the start
Signed-off-by: R <rqou@berkeley.edu>
2022-11-04 12:32:23 +09:00
R
784febab4c scaler: initial commit
Signed-off-by: R <rqou@berkeley.edu>
2022-11-04 12:32:23 +09:00
Kellerman Rivero
404ab21fe4 hv/trace_isp.py: add ISP tracer
Image Signal Processor is a co-processor in charge of Facetime camera
in Apple laptops. This tracer is based on ISP found in M1 processor.

The ISP in M1 SoC exposes seven inter-process communication channels.
Using those channels Application Processor (AP) can perform a variety of
task in the ISP and viceversa. All channels seems to be bidirectional, with
unique exception of TERMINAL channel.

DART translation is used often to translate control structures passed
over IPC channels to IO virtual addresses.

How those channels are used is still unclear but tracer should allow us
to dive deep on high-level protocol to communicate with Facetime camera.
ISP exposes also some I2C peripheral and SPMI registers but I haven't
dive into their working or purpose.

Signed-off-by: Kellerman Rivero <krsloco@gmail.com>
2022-11-04 12:30:59 +09:00
Sven Peter
aa3ce98a53 m1n1.hw.atc: Add more registers
Signed-off-by: Sven Peter <sven@svenpeter.dev>
2022-10-31 18:22:46 +09:00
Hector Martin
0fb9bf6c40 hv/trace_wlan.py: More WLAN tracer stuff
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-10-23 17:22:14 +09:00
Asahi Lina
3e36d18241 tools/run_guest_kernel.sh: Support --
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-10-17 22:14:21 +09:00
Asahi Lina
d6d72b6398 hv_exc: Pass through TLBI OS instructions
Gues VM TLBI OS instructions don't work. Trap them and pass them through
as the host.

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-10-17 22:14:21 +09:00
Asahi Lina
4274c9d74a hv: Log memory attribute & sharability info in mmiotrace
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-10-17 22:14:21 +09:00
Zhuowei Zhang
5836db9305 m1n1.proxy: increase p.call max args to 5 to match proxy.c
Commit 6a1a9bfc3c raised the limit in proxy.c but not in the Python code.

Signed-off-by: Zhuowei Zhang <zhuoweizhang@yahoo.com>
2022-10-11 22:55:53 +09:00
Radovan Blažek
e9e2571a17 proxyclient/m1n1/proxy.py: Add missing returns
Return the result in setX, clearX and maskX functions.

Signed-off-by: Radovan Blažek <blazra@gmail.com>
2022-09-28 01:21:47 +09:00
Sven Peter
ded7e58e90 trace_dcp: Add dcpdptx-hdcp-auth-session tracer
Signed-off-by: Sven Peter <sven@svenpeter.dev>
2022-09-28 01:21:23 +09:00
Sven Peter
c1e84bf79c trace_dcp: Add dcpav-controller-epic tracer
Signed-off-by: Sven Peter <sven@svenpeter.dev>
2022-09-28 01:21:23 +09:00
Sven Peter
c8d606e270 trace_dcp: Add dcpdp-device-epic tracer
Signed-off-by: Sven Peter <sven@svenpeter.dev>
2022-09-28 01:21:23 +09:00
Sven Peter
3e112460cd trace_dcp: Add dcpav-audio-interface-epic tracer
Signed-off-by: Sven Peter <sven@svenpeter.dev>
2022-09-28 01:21:23 +09:00
Sven Peter
f072434647 trace_dcp: Add dcpdptx-port-epic tracer
Signed-off-by: Sven Peter <sven@svenpeter.dev>
2022-09-28 01:21:23 +09:00
Sven Peter
da8a691023 trace_dcp: Rename EPIC endpoints
Signed-off-by: Sven Peter <sven@svenpeter.dev>
2022-09-28 01:21:23 +09:00
Sven Peter
f5ed6f89b0 trace_dcp: Add SilentEp to shut individual tracers up
Signed-off-by: Sven Peter <sven@svenpeter.dev>
2022-09-28 01:21:23 +09:00
Sven Peter
b5e16b2a67 trace_dcp: Add EPICServiceTracer
Signed-off-by: Sven Peter <sven@svenpeter.dev>
2022-09-28 01:21:23 +09:00
Sven Peter
e1ad6e7e90 trace_dcp: Allow to switch to dcpext
Signed-off-by: Sven Peter <sven@svenpeter.dev>
2022-09-28 01:21:23 +09:00
Asahi Lina
63345c43ac m1n1.fw.agx.channels: Map the specific size for each state field type
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
13cfe5028f m1n1.fw.agx.initdata: Replace padding with explicit fields
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
202781f4f1 m1n1.fw.agx.initdata: Fix number of buffer managers
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
35b33fdd28 m1n1.trace.agx: Fix number of UAT contexts
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
d1a3b8c7fa experiments/agx_dumpstructs.py: Dump microsequence
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
88603e153c hv/trace_agx_defer.py: Add another tracer variant
This one configures it to stop tracing after init, good for
self-contained tests

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
d6d17b6b2d m1n1.fw.asc.crash: Gracefully handle faulting code dumps
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
83b9d5c13f m1n1.agx.initdata: Add a field
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
cb9f7cd685 m1n1.proxyutils: Fix instruction cache
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
0aed256416 m1n1.fw.agx: Add Halt message (maybe?)
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
0d3ed156a1 m1n1.constructutils: Add offsetof()
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
7889f056f9 m1n1.agx.cmdqueue: Rename Timestamp to TimeStamp
This avoids a conflict with Construct

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
8a222a1346 m1n1.agx.context: Print address in hex
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
65d4f7ab80 m1n1.fw.agx.channels & co: Add some KTrace support
This is quite handy to see what the firmware is doing

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
7a38d14a0c m1n1.agx.channels: Complain if the ring pointer overflows
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
0e8a522845 experiments/agx_renderframe.py: Rework based on the other demos
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
fddb8d63e0 m1n1.trace.agx: Allow configurable user/kernel map tracing
Also improve the general handling of all this... the logic is still
broken in places.

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
35a5e2a838 m1n1.trace.agx: Handle new queue pointer resets properly
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
5dfbd5216c m1n1.trace.agx: Disable handoff tracer
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
cc29042f97 m1n1.trace.agx: Don't trace Stats/KTrace
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
70b08f6eb3 m1n1.trace.agx: Disable buffermanager dumping
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
01fbc9be41 m1n1.fw.agx.cmdqueue: Fix tail
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
3fa023a0d9 m1n1.hw.uat: Only clear out kernel PTs on init()
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Asahi Lina
77a00eb5b3 m1n1.hw.uat: Decode permissions properly
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-09-27 06:02:28 +09:00
Hector Martin
50f02bb58a hv/trace_wlan.py: Add WLAN tracer
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-09-19 19:24:15 +09:00
Hector Martin
6461488450 m1n1.trace.pcie: New module
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-09-19 19:23:53 +09:00
Hector Martin
83fc313611 m1n1.proxyutils: Support split 64-bit read/write
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-09-19 19:23:22 +09:00
Hector Martin
ddb3497794 hv/trace_codecs.py: Disable time stealing
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-09-14 11:55:35 +09:00
Hector Martin
6da0301d6b m1n1.adt: Add amp-dcblocker-config decoding
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-09-13 00:26:15 +09:00
Hector Martin
8a44f1ddb2 m1n1.adt: Add speaker-config decoding
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-09-13 00:18:21 +09:00
Hector Martin
5e26ae26f8 tools/run_guest_kernel.sh: Allow overriding $TMPDIR
Also use $XDG_RUNTIME_DIR by default if set

Signed-off-by: Hector Martin <marcan@marcan.st>
2022-09-12 17:46:31 +09:00
Hector Martin
281784d48e experiments/dcpext_iboot.py: displayRequest() works now
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-08-31 02:32:35 +09:00
Hector Martin
501a367310 m1n1.fw.afk.rbep: Update rptr after each packet
This seems to unblock things for some reason.

Signed-off-by: Hector Martin <marcan@marcan.st>
2022-08-31 02:29:31 +09:00
Hector Martin
270f864ae9 m1n1.fw.afk.epic: Implement system endpoint & debug enable
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-08-31 02:14:54 +09:00
Hector Martin
7d999ddf11 m1n1.fw.afk.epic: s/send_cmd/call/ for higher level messages
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-08-31 02:14:54 +09:00
Hector Martin
2c528baf2d m1n1.fw.common: Implement OSSerialize build
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-08-31 02:14:54 +09:00
Hector Martin
041e07b56b m1n1.fw.afk.epic: Ack notifies (maybe)
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-08-31 02:14:54 +09:00
Sven Peter
76b878a350 proxyclient/m1n1/hv: Support loading additional symbols from kexts
Signed-off-by: Sven Peter <sven@svenpeter.dev>
2022-08-30 22:41:58 +09:00
Sven Peter
0f87d79a61 proxyclient/m1n1/macho: Support demangling symbols
Signed-off-by: Sven Peter <sven@svenpeter.dev>
2022-08-30 22:41:58 +09:00
Javier Alvarez
8a544a8b27
m1n1 entrypoint args for raw binary images (#240)
* tools/run_guest.py: Allow specifying entrypoint for raw images

This allows running images other than m1n1 that don't have the
entrypoint at 0x800. If unspecified, it defaults to 0x800 for m1n1.

Signed-off-by: Javier Alvarez <javier.alvarez@allthingsembedded.net>
2022-08-30 22:39:20 +09:00
Javier Alvarez
6836e8a72f tools/chainload.py: Allow specifying entrypoint for raw images
This allows running images other than m1n1 that don't have the
entrypoint at 0x800. If unspecified, it defaults to 0x800 for m1n1.

Signed-off-by: Javier Alvarez <javier.alvarez@allthingsembedded.net>
2022-08-30 22:38:38 +09:00
Janne Grunau
5e6a6abcfb experiments/dcp.py: replace image loading with rainbow
A couple of p.memset32() are much faster than uploading an image over
the virtualized uart.
Avoids creating resolution dependent framebuffer data files.

Signed-off-by: Janne Grunau <j@jannau.net>
2022-08-30 22:32:30 +09:00
Janne Grunau
27439718e4 experiments/dcp.py: adapt update_notify_clients_dcp to macos 12.3 API
Signed-off-by: Janne Grunau <j@jannau.net>
2022-08-30 22:32:30 +09:00
Janne Grunau
583401d630 m1n1.fw.asc: Increase default boot timeout to 3
Necessary for running experiments/dcp.py with hv/trace_dcp.py.

Signed-off-by: Janne Grunau <j@jannau.net>
2022-08-30 22:32:30 +09:00
Janne Grunau
4ddf2a9eb6 m1n1.fw.dcp.manager: use kwargs for swap_complete_*
Also handle NULL swap_data. Fixes experiments/dcp.py after naming the
parameters in ipc.py.

Signed-off-by: Janne Grunau <j@jannau.net>
2022-08-30 22:32:30 +09:00
Sven Peter
44781f2b72 proxyclient/trace_atc: Add dwc3 PIPEHANDLER regs
Signed-off-by: Sven Peter <sven@svenpeter.dev>
2022-08-30 22:31:36 +09:00
Sven Peter
236e01808e proxyclient/trace_atc: Change default settings
Trace async because we don't care about DMA buffers yet and disable
dwc3 tracing by default since that's relatively boring.

Signed-off-by: Sven Peter <sven@svenpeter.dev>
2022-08-30 22:31:36 +09:00
Sven Peter
0aa91e5b98 proxyclient/trace_atc: Add more ATCPHY registers
Signed-off-by: Sven Peter <sven@svenpeter.dev>
2022-08-30 22:31:36 +09:00
Sven Peter
443194a8cd proxyclient/trace_atc: Split register definitions from trace_atc.py
Signed-off-by: Sven Peter <sven@svenpeter.dev>
2022-08-30 22:31:36 +09:00
Sven Peter
f3d34a3765 proxyclient/trace: Allow to specify offset into RegMap
Signed-off-by: Sven Peter <sven@svenpeter.dev>
2022-08-30 22:31:36 +09:00
amarioguy (Arminder Singh)
7367f91089 set sym_offset if using XNU symbols
This is to fix a bug with the hv raw binary patch that caused XNU symbols to stop working.

Signed-off-by: amarioguy (Arminder Singh) <arminders208@outlook.com>
2022-08-30 22:30:04 +09:00
Martin Povišer
ff46ca4118 tools/run_guest.py: Add --append-payload
Add command-line option for appending a separate file (or files) to
the payload.

Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-08-30 22:29:41 +09:00
Martin Povišer
ed84e15eaa m1n1.asm: Fix missing DEFAULT_ARCH on Darwin
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-08-30 22:29:41 +09:00
Martin Povišer
7de6d56274 experiments/speaker_amp.py: Fix AUDIO_P power-domain index
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-08-30 22:29:41 +09:00
Martin Povišer
bce384e8c4 m1n1.hw.codecs: Define some TAS5770 TDM_* registers
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-08-30 22:29:41 +09:00
Martin Povišer
4f6a65f481 m1n1.hw.codecs.cs42l84: Extend register definitions
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-08-30 22:29:41 +09:00
Martin Povišer
42f7f46bdc m1n1.hw.admac: Add fill_canary()
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-08-30 22:29:41 +09:00
Martin Povišer
e20509f42d m1n1.hw.admac: Fix typo
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-08-30 22:29:41 +09:00
Martin Povišer
3c012da1ee tools/codecshell.py: Enforce reset (unless given --no-reset)
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-08-30 22:29:41 +09:00
Martin Povišer
13a15aefc3 m1n1.utils: Add chexundump, inverse of chexdump
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-08-30 22:29:41 +09:00
Martin Povišer
6fa017cb0b m1n1.hv: Support hooks on breakpoints
Also add clear_hw_bps() to clear all breakpoints.

Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-08-30 22:29:41 +09:00
Martin Povišer
4a61e3d50d m1n1.hostutils: Support accesses wider than kernel granule
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-08-30 22:29:41 +09:00
Martin Povišer
27e1499c72 m1n1.hw.hostutils: Add regmap backend over host kernel's regmaps
Add utility accessor to the host kernel's regmaps -- allowing one to use
m1n1 RegMaps with the internal regmap structures of the host kernel,
poking behind the back of in-development kernel drivers.

Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-08-30 22:29:41 +09:00
Hector Martin
846b1a4d6a tools/run_guest_kernel.sh: Fix usage without initramfs
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-08-30 21:42:16 +09:00
Hector Martin
90b8a47462 tools/run_guest.py: Start HV with ^D
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-08-30 21:42:00 +09:00
Hector Martin
b6823890db m1n1.utils: RegMap: Fix aliasing...
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-08-30 21:41:45 +09:00
Hector Martin
692817f382 experiments/dcpext_iboot.py: Separate experiment for dcpext stuff
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-08-30 21:39:38 +09:00
Hector Martin
d0ba79fde2 m1n1.fw.dcp: Support multi-unit EPIC services, refactor, add stuff
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-08-30 21:38:45 +09:00
Hector Martin
5ed8991c38 m1n1.utils: RegMap: Fix inheritance
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-08-29 18:10:16 +09:00
Hector Martin
4ed4dea56e m1n1.hv: Make TLBOS op tracing optional
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-08-29 17:25:40 +09:00
Hector Martin
5456642834 tools/run_guest_kernel.sh: Support specifying kernel
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-08-29 17:14:33 +09:00
Hector Martin
a47b590776 m1n1.adt: Add translate() method
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-08-29 17:03:02 +09:00
Hector Martin
29a85d6857 Makefile, asm.py: Work on native arm64 by default
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-08-29 17:03:01 +09:00
Asahi Lina
a010a2fc36 m1n1.hw.uat: Clear out any stray page tables on init
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-19 02:04:08 +09:00
Asahi Lina
5ec5def953 m1n1.hw.agx: Better fault decoding
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-19 02:03:18 +09:00
Asahi Lina
85b4dc6b27 m1n1.agx.object: Fix noncoherent object unmap dance
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-18 21:39:01 +09:00
Asahi Lina
fafe5c8c62 m1n1.fw.agx.handoff: Fix args & flush fields
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-18 21:38:38 +09:00
Asahi Lina
a87d85a7a2 m1n1.constructutils: Do not print Ver-disabled fields
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-18 21:26:00 +09:00
Asahi Lina
b95860ee10 m1n1.fw.agx.initdata: Unbreak 12.3 firmware
I knew I'd mess something up here...

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-18 21:25:28 +09:00
Asahi Lina
690ff9bde8 tools/run_guest_kernel.sh: Allow passing HV args
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-18 02:05:49 +09:00
Asahi Lina
cfca18b83a experiments: Add misc AGX experiments
A lot of these are broken/out of date with the current code, but it's
good to have them committed...

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
2506ccf63f m1n1.agx.render: Misc field value changes (CHECK!)
Things I changed during the 13.0b4 port. These are all suspect and we
really should figure out what they do.

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
ffb42cabc7 m1n1.agx.render: Only blit 1920px wide FBs, disable depth dumps
This is a hack anyway. Almost all my demos/tests work with this
particular logic right now.

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
2b1bb76416 m1n1.agx.render: Log event IDs
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
b0f8700796 m1n1.agx.render: Add support for input barriers
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
fc887ac570 m1n1.agx.render: Updates for struct changes and 13.0b4 support
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
8f7d1a9a9c m1n1.fw.agx.microsequence: Updates for 13.0b4 and fixes
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
88de83422a m1n1.fw.agx.cmdqueue: Updates for 13.0b4 support and misc
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
a4bfc4a9b8 m1n1.agx.event: Log when flag messages are received
This makes the event grouping visible

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
d96d17d36a m1n1.agx.initdata: Disable the idle time overrides
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
dc3a39a2c7 m1n1.agx.object: Show object type in the Construct path
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
7f9d8a343c m1n1.agx.channels: Add support for more DeviceControl messages
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
3ad561bc25 HACK: Disable Stats message parsing
The size changed in 13.0b4, need to figure out the new size...

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
35067afec3 m1n1.fw.agx.channels: Fix KTrace message size/count
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
59bce08297 m1n1.fw.agx.channels: Fix TimeoutMsg field
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
f4daec5869 m1n1.fw.agx.channels: Add some more DeviceControl messages
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
b189e6a0ba m1n1.fw.agx.channels: Switch a bunch of things to ZPadding
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
6441fe11cd m1n1.fw.asc: Increase default boot timeout to 2
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
e8ce458dd5 m1n1.fw.agx.initdata: Updates for 13.0b4 support
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
6a99f397de hv/trace_agx.py: Automatically set version
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
2b06a62b63 m1n1.proxyutils: Add support for figuring out firmware version
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
ccbb943993 m1n1.construcutils: Add to_rust() to generate Rust struct defs
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
8e3d6b1b52 m1n1.constructutils: Add Ver() versioning support
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
da40a6d843 m1n1.constructutils: Add ZPadding type
Like Padding, but actually asserts that the contents are zeroed.

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
9aaac03907 m1n1.trace.agx: Print work item addresses
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
71e24171be m1n1.trace.agx: Check for ring buffer overflow
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
5b9c709753 m1n1.trace.agx: s/NewInitData/InitData/
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
2ce4db9d8d experiments/dcp_iboot.py: Fix p.display_shutdown() call
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
4923dd1e2e m1n1.agx.shim: Optimize GBM buffer polling/copying
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
6ddc79a6eb m1n1.agx.shim: Add log() method
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
15ba9aa55c m1n1.agx.shim: Allocate GPU context explicitly
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
f89a0f5c8d m1n1.agx.render: Change fb/depth dumping conditions
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
f4a71eecb0 m1n1.agx.render: Log more/less stuff
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
818ba31268 m1n1.agx.render: More random field value updates
Some of these really need to be investigated...

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
e53298a6ca m1n1.agx.render: Add timestamp objects
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
23e8d463d0 m1n1.agx.render: Rearm events when fired
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
4fa101e0a3 m1n1.agx.render: Keep track of work objects and free them
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
b6fde95d88 m1n1fw.agx.cmdqueue: Update barrier stamp field names
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
8923ffdaa4 m1n1.fw.agx.microsequence: More field updates
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
448bcf1bba m1n1.agx.event: Do not free event when it fires
Renderer will reuse events

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
1f7e1b34c9 m1n1.agx.object: Properly do the free() unmap dance
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
2a4b408678 m1n1.agx.object: Optimize handling of raw buffers
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
76071a4fee m1n1.agx.context: Add freeing support
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
701714d92b m1n1.agx.context: Default to shared mappings
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
8f5ba29af9 m1n1.agx.context: Add strange map at 0x6fffff8000
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
75ebc3ad31 m1n1.trace.agx: Remove some dumps
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
daf56619df m1n1.trace.agx: Reset queue tracer on new queue
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
08cc1c3178 m1n1.trace.agx: Add separate kern/user va tracing
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00
Asahi Lina
00625fb8a0 m1n1.trace.agx: Add handoff tracer
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-08-17 15:00:00 +09:00