Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 2 additions & 2 deletions docs/alt/policy.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ unstable package stream) within 2 weeks of becoming available upstream.
## Installation procedure
Asahi Linux uses Das U-Boot's UEFI environment to chainload standard UEFI
bootloaders, such as GRUB and systemd-boot. The Asahi Installer is capable
of setting up a minial UEFI-only environment capable of booting UEFI
of setting up a minimal UEFI-only environment capable of booting UEFI
executables on removable media. This provides users an installation
experience that is almost identical to a standard amd64-based workstation.
Building Apple Silicon support into your distro's existing AArch64 bootable
Expand Down Expand Up @@ -170,7 +170,7 @@ installation tooling sufficiently foolproof on Apple Silicon devices, we _may_ r
the need to support the image-based installation flow going forward.

## Disendorsement
Through dilligent QA and attention to detail, Asahi Linux has
Through diligent QA and attention to detail, Asahi Linux has
become well-regarded as one of the best desktop Linux experiences available.
This is a great source of pride for us, and we are determined to meet the high
user expectations that come with such a reputation. We expect officially
Expand Down
2 changes: 1 addition & 1 deletion docs/fw/adt.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ copy the im4p file from the below directory. See [Devices](../hw/devices/device-

`/System/Volumes/Preboot/[UUID]/restore/Firmware/all_flash/DeviceTree.{model}.im4p`

If the dir doesn't exist try disabling csrutil in recovery mode, going to settings and enabling terminal to acces all files, or start from `Volumes/Macintosh HD/` because it may be symlinked. If it's still not accessible, try good ol `sudo find . -type f -name '*.im4p'`.
If the dir doesn't exist try disabling csrutil in recovery mode, going to settings and enabling terminal to access all files, or start from `Volumes/Macintosh HD/` because it may be symlinked. If it's still not accessible, try good ol `sudo find . -type f -name '*.im4p'`.

then use img4tool to extract the im4p file into a .bin file e.g.
```
Expand Down
2 changes: 1 addition & 1 deletion docs/fw/macho-boot-protocol.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,6 @@ When running m1n1 initially, the relevant memory looks like this:
+==========================+ <-- boot_args->top_of_kdata + boot_args->mem_size
```

m1n1's heapblock area (used as a backend for malloc, and for loading payloads) starts at `boot_args.top_of_kdata` and has no bound at this time. When using proxyclient, ProxyUtils will set up a Python heap base 128MiB above whatever the current heapblock top is, which means m1n1 can use up to 128MiB of additional memory before it runs into Python-side structures. Note that fresh executions of the Python side will re-initialize their heap starting at whatever the current m1n1 end is, so e.g. m1n1-side memory leaks on each Python excecution are not an immediate problem until you run out of total RAM.
m1n1's heapblock area (used as a backend for malloc, and for loading payloads) starts at `boot_args.top_of_kdata` and has no bound at this time. When using proxyclient, ProxyUtils will set up a Python heap base 128MiB above whatever the current heapblock top is, which means m1n1 can use up to 128MiB of additional memory before it runs into Python-side structures. Note that fresh executions of the Python side will re-initialize their heap starting at whatever the current m1n1 end is, so e.g. m1n1-side memory leaks on each Python execution are not an immediate problem until you run out of total RAM.

When chainloading another Mach-O payload, the next stage overwrites m1n1 in-place. The chainload.py Mach-O loading code skips the padding end of the m1n1 payload section (except 4 zero bytes as a marker), so SEP firmware and BootArgs follow directly in what would've otherwise been the m1n1 payload area, saving RAM. Relocating the SEP firmware is optional; if it is not enabled, it remains where it is, and top_of_kdata is kept untouched. Unless m1n1 grows by more than the size of its payload region, this should be safe.
4 changes: 2 additions & 2 deletions docs/hw/soc/agx.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ Data structures: see [cmdqueue.py](https://github.com/AsahiLinux/m1n1/blob/main/

### Micro Sequences

The ASC firmware contains a command sequencer that can run fairly complext "scripts" as part of work commands, but it is usually used in a fairly basic manner. These sequences are packed buffers of commands that are executed as part of a work item. The typical sequence is:
The ASC firmware contains a command sequencer that can run fairly complex "scripts" as part of work commands, but it is usually used in a fairly basic manner. These sequences are packed buffers of commands that are executed as part of a work item. The typical sequence is:

* Start (3D/TA/CP)
* Write Timestamp
Expand Down Expand Up @@ -163,7 +163,7 @@ The TA work usually looks like this:

#### Initialize Heap Manager

Needed the first time or when the heap size changes. Tells the GPU that the CPU re-initialized the management struture.
Needed the first time or when the heap size changes. Tells the GPU that the CPU re-initialized the management structure.

There is an unknown context-related ID involved. This might be a heap manager ID? The (new) TA stamp value is also passed.

Expand Down
1 change: 1 addition & 0 deletions docs/hw/soc/apcie.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ The following set of tunables operate on config space of the per-port PCIe bridg

### pcie-rc-tunables
On the 2020 M1 mini, this set of register writes modifies some bits on standardized capability structures as well as some other registers.

| register | capability | effect |
|----------|------------|--------|
| 0x194 | L1 PM Substates | clear Port Common_Mode_Restore_Time |
Expand Down
2 changes: 1 addition & 1 deletion docs/hw/soc/asc.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ title: ASC
0 - CPU_IDLE

0x400
10 - set when the CPU is started (probaby by firmware)
10 - set when the CPU is started (probably by firmware)

0x80c - IRQ_CONFIG
0 - IRQ_CONTROLLER_ENABLE
Expand Down
2 changes: 1 addition & 1 deletion docs/project/glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ If you want to collect a large set of terms specific to a sub-field (such as GPU
* **iBSS**: iBoot Single Stage. Replacement for the first-stage iBoot (iBoot1/LLB), loaded in the DFU boot flow when the NOR is corrupted.
* **IOKit**: I/O Kit is Apple's device driver framework for XNU (Apple's operating system kernel).
* **IOMMU**: I/O Memory Management Unit, a more general term for Apple's DART.
* **IPI**: Inter-processor interupt. An interrupt used by one processor to interrupt another.
* **IPI**: Inter-processor interrupt. An interrupt used by one processor to interrupt another.
* **iSC**: iBoot System Container. A disk partition (usually first on the internal SSD) containing the system wide boot data. (See [Stock Partition Layout](../platform/stock-partition-layout.md))
* **ISP**: Image Signal Processor. Webcam on M-series laptops. Denotes the entire camera unit, from sensors to strobe to the coprocessor.

Expand Down
2 changes: 1 addition & 1 deletion docs/sw/m1n1-hypervisor.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ Here are some numbers from some experiment with macOS `11.5.2` and m1n1 version

## Updating your m1n1 hypervisor tree

The hypervisor/m1n1 ABI is *not* stable. If you have installed a fresh m1n1 build as above, you can use `run_guest.py` directy to save some time. However, as soon as you update your m1n1 git tree, you *must* build the updated m1n1 and run
The hypervisor/m1n1 ABI is *not* stable. If you have installed a fresh m1n1 build as above, you can use `run_guest.py` directly to save some time. However, as soon as you update your m1n1 git tree, you *must* build the updated m1n1 and run
```
python tools/chainload.py -r ../build/m1n1.bin
```
Expand Down
6 changes: 3 additions & 3 deletions docs/sw/tethered-boot-macos-host.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ This guide will give more details about tethered boot prerequisites setup for a
Host's requirements:

* Any Apple computer running a decently recent MacOs version
* Enough disk space on the host for installing and commpiling software
* Enough disk space on the host for installing and compiling software
* a free USB port on the host
* a USB-A/USB-C or USB-C/USB-C cable
* [prerequisites installed](#installing-prerequisite-software)
Expand Down Expand Up @@ -126,7 +126,7 @@ pyserial-ports is /usr/local/bin/pyserial-ports

### Installing picocom

A serial port communication software is required to establish communication with m1n1 proxy. We recommend installing `picocom` for use as a serial terminal, which is vailable with homebrew:
A serial port communication software is required to establish communication with m1n1 proxy. We recommend installing `picocom` for use as a serial terminal, which is available with homebrew:

```shell
brew install picocom
Expand All @@ -149,7 +149,7 @@ brew install img4tool

If you intend to boot a stock macOS kernel, you'll need these tools to extract the actual kernel file from the kernlecache of a macOS install on the target machine. In the absence of precompiled version for macOS you'll have to compile it.

For this step, setup a `asahi` folder in your home directory and clone everything there, additionaly install everything in an `~/asahi/deps` folder so as to not mess up with the rest of the system.
For this step, setup a `asahi` folder in your home directory and clone everything there, additionally install everything in an `~/asahi/deps` folder so as to not mess up with the rest of the system.

First clone, build and install `libgeneral`

Expand Down