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
2cb6cb46ca
tools/run_guest.py: Add -v option for attaching 9P virtio exports
...
Signed-off-by: Martin Povišer <povik@cutebit.org>
2023-01-13 17:25:25 +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
Martin Povišer
6661ab14d0
hv: Add 9P virtio peripheral
...
Add some minimal implementation of virtio peripherals. At the level
of on-target hypervisor code we implement the MMIO layout and
maintain virtqueues. Once a buffer is available, we break into the
host proxyclient to deal with it.
Specific device-classes of the virtio spec ought to be implemented in
the proxyclient. Here the one device implemented is 9P transport,
exporting the m1n1 source directory.
Signed-off-by: Martin Povišer <povik@cutebit.org>
2023-01-13 17:25:25 +09:00
Hector Martin
586157b8bf
experiments/smc_watcher.py: new experiment
...
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-12-26 15:07:52 +09:00
Sasha Finkelstein
8c2ad9ada6
Add z2 touch panel tracing
...
Signed-off-by: Sasha Finkelstein <fnkl.kernel@gmail.com>
2022-12-24 20:45:19 +09:00
Asahi Lina
87fa247d9b
m1n1.fw.agx.microsequence: Identify visibility_result_buffer field
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
9ebc38ca73
m1n1.trace.agx: Fix UAT TTBR PT size
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
1b9cb35104
experiments/agx_*.py: Autodetect FW version and GPU rev
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
2b0e022b78
m1n1.agx: Port rendering to G14
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
696cdee114
m1n1.agx.initdata: Port to G14G
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
80266ff93e
m1n1.constructutils: Unify version conditional syntax with Rust
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
82a9bf3c26
hv/trace_agx_pwr.py: Cleanup
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
9360a92cdc
m1n1/trace/agx.py: Add SGXTracer
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
0a57f45805
m1n1.hw.agx: Add chip info regs
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
e1752306c5
m1n1.fw.agx.initdata: Fix a bunch of fields
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
2dab8e352a
m1n1.agx.render: Misc tiling related fixes
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
9e65bd527b
experiments/agx_{parallel,renderframe}.py: Misc fixes
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
25e1644858
m1n1.adt: Add mtr-polynom-fuse-agx parsing
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
fbc04995ab
tools/chainload.py: Fix chainloading of xnu
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
6e99fde8f2
hv/trace_all_more.py: Trace more stuff
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
10d772f743
hv/trace_agx_pwr.py: Messing with pstates
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
34b883318c
m1n1.fw.agx.initdata: Make somethings Dec
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
e4810a452d
m1n1.utils: Add align_pot()
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
7b63613945
m1n1.agx.render: Always enable Z compression
...
This seems to be required on t600x...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
05ece42eba
m1n1.agx.render: Better t600x support
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
bcd3d0274d
m1n1.agx.initdata: Work out all the ADT relationships
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
d265abc90c
m1n1.adt: Fixes for adding properties
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
808baf22df
m1n1.agx: Initial T600x port
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:10 +09:00
Asahi Lina
5a73bd6476
hv/trace_agx_pwr.py: New HV experiment
...
This is intended to reverse-engineer the macOS driver's power scale
calculations.
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:17:07 +09:00
Asahi Lina
02d9fdc6a0
m1n1.trace.agx: Add after_init_hook
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
e50be4bf0d
experiments/agx_tlb.py: Misc tracing changes
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
29ee0d5d32
m1n1.hv: Don't catch SystemExit from tracers/shells
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
b4d5ff7520
m1n1.agx: Add printing IRQs
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
2fe37d6dfa
m1n1.fw.agx: Misc field renames & fixes
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
b4a19572f2
m1n1.fw.agx.handoff: Add CUR_CTX field
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
Asahi Lina
3aa2be6489
m1n1.hw.uat: Flushing cleanup
...
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-12-04 13:15:55 +09:00
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