Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
85adc6e
apple: add G5P render support for J71t with the original device firmware
brkosebay Nov 5, 2026
cfa4c8d
G5P render, autoboot, META71C and boot-origin policy
brkosebay Nov 8, 2026
fd6e7fe
AOP sensors and certified warm reload
brkosebay Nov 8, 2026
28c7d41
PCI/NVMe: retain the stopped ANS handoff across kexec
brkosebay Nov 8, 2026
419fe19
Optional resident m1n1 EL3 PSCI
brkosebay Nov 8, 2026
a76d376
pinctrl/spi/input: quiesce S8000 peripherals for kexec
brkosebay Nov 8, 2026
1ca51ef
J71t guarded Mac current profile
brkosebay Nov 8, 2026
ca3266c
AOP sensors and certified warm reload
brkosebay Nov 8, 2026
6fd2737
usb: keep per-device system and RAM serials stable across boots
brkosebay Nov 8, 2026
6c1601e
Optional resident m1n1 EL3 PSCI
brkosebay Nov 8, 2026
eb6a0b1
Quiet polled cover inputs and exclusive RTC event
brkosebay Nov 8, 2026
e4ea0b7
PCI/NVMe: retain the stopped ANS handoff across kexec
brkosebay Nov 8, 2026
33047d2
pinctrl/spi/input: quiesce S8000 peripherals for kexec
brkosebay Nov 8, 2026
0886d8c
Warm Restart evidence, reset guard and pristine DT
brkosebay Nov 8, 2026
fa1cb2e
Merge the j71t/warm-peripherals branch into j71t/mac-current
brkosebay Nov 12, 2026
0674e1d
j71t: Guarded Mac current profile
brkosebay Nov 12, 2026
82666fd
Merge the j71t/psci branch into j71t/aop
brkosebay Nov 12, 2026
502c5ac
Merge the j71t/mac-current branch into j71t/usb-stable-serial
brkosebay Nov 12, 2026
a54e204
j71t: AOP sensors with a retained firmware state for reload
brkosebay Nov 12, 2026
bbe62ba
usb: Keep per-device system and RAM serials stable across boots
brkosebay Nov 12, 2026
e8b5e4b
j71t: Wake from sleep on the Smart Cover
brkosebay Nov 12, 2026
6525d20
Merge main into j71t/psci
brkosebay Nov 12, 2026
2496d64
Merge the j71t/aop branch into j71t/pmu-rtc
brkosebay Nov 12, 2026
6e0deb0
Merge the j71t/pmu-rtc branch into j71t/warm-storage
brkosebay Nov 12, 2026
39cea4b
Merge the j71t/warm-storage branch into j71t/warm-peripherals
brkosebay Nov 12, 2026
28a9693
Merge the j71t/usb-stable-serial branch into j71t/warm-kernel
brkosebay Nov 12, 2026
a427542
Merge the j71t/cover-wake branch into apple-g5p-render
brkosebay Nov 12, 2026
7d41c32
m1n1: Resident EL3 PSCI for A7-A9, on by default
brkosebay Nov 12, 2026
190bb13
j71t: One owner for the PMU and RTC wake interrupts
brkosebay Nov 12, 2026
d2247b1
PCI/NVMe: Keep the ANS handoff across kexec, cold-reset when it fails
brkosebay Nov 12, 2026
8286fdf
pinctrl/spi/input: Quiesce S8000 peripherals for kexec
brkosebay Nov 12, 2026
57e91ab
kernel: Retain the tethered warm boot state across kexec
brkosebay Nov 12, 2026
92d22c8
watchdog: apple: Prefer a cold reset and guard the warm reset path
brkosebay Nov 12, 2026
40a8b18
j71t: Suspend to idle with retained ANS power and early driver admission
brkosebay Nov 12, 2026
557ef01
apple: G5P render and compute for J71t with the device's own firmware
brkosebay Nov 12, 2026
8c737f8
Merge upstream main into j71t/psci
brkosebay Nov 13, 2026
72ca165
Merge the j71t/psci branch into j71t/pmu-rtc
brkosebay Nov 13, 2026
bfb58aa
Merge the j71t/pmu-rtc branch into j71t/warm-storage
brkosebay Nov 13, 2026
86c47ee
Merge the j71t/warm-storage branch into j71t/warm-peripherals
brkosebay Nov 13, 2026
2de73b0
Merge the j71t/warm-peripherals branch into j71t/warm-kernel
brkosebay Nov 13, 2026
2c93bef
m1n1: Pass the A9 AOP's boot arguments and sensor calibration
brkosebay Nov 13, 2026
011ab65
kernel: Keep the AOP's firmware across kexec and reload it
brkosebay Nov 13, 2026
d32d990
platform: Keep every board's pristine device tree for warm restart
brkosebay Nov 13, 2026
172c287
Merge the j71t/warm-kernel branch into j71t/reset-guard
brkosebay Nov 13, 2026
934d6c5
Merge the j71t/reset-guard branch into j71t/suspend
brkosebay Nov 13, 2026
7e6d459
kernel: Refuse a system sleep while the AOP firmware is not settled
brkosebay Nov 13, 2026
ce7d3b2
kernel: Require a proven VXD firmware stop before kexec
brkosebay Nov 13, 2026
e040874
Merge the j71t/suspend branch into apple-g5p-render
brkosebay Nov 13, 2026
e3800e6
j71t: Ship the G5P firmware loader again
brkosebay Nov 13, 2026
ee634f8
tests: Check J71t's G5P loader and that every recipe step is used
brkosebay Nov 13, 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
26 changes: 26 additions & 0 deletions boot/initramfs/root/init
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,32 @@ mkdir -p /newroot
mount ${fstype:+-t "$fstype"} -o "$mode${flags:+,$flags}" "$device" /newroot || stop "could not mount $device"
[ -x "/newroot$init" ] || [ -L "/newroot$init" ] || stop "the root has no $init"

# Preserve the running boot's *pristine* tree before any package update can
# replace /boot or same-release module assets. The matching initrd embeds cold
# DTBs; warm boots name their retained stage instead. Never infer it by uname.
mkdir -p /run /newroot/run
mount -t tmpfs -o mode=0755,nosuid,nodev tmpfs /run
mkdir -p /run/orchard-kexec
warm_pristine=
for argument in $(cat /proc/cmdline); do
case "$argument" in orchard_warm.dtb=*) warm_pristine=${argument#orchard_warm.dtb=} ;; esac
done
if [ -n "$warm_pristine" ]; then
case "$warm_pristine" in
/var/tmp/orchard-warm.*/pristine.dtb)
case "$warm_pristine" in *..*) stop 'invalid warm DT provenance' ;; esac
cp "/newroot$warm_pristine" /run/orchard-kexec/pristine.dtb || stop 'missing warm pristine DT' ;;
*) stop 'invalid warm DT provenance' ;;
esac
elif [ -f /etc/orchard/pristine-map ]; then
board=$(tr '\000' '\n' < /proc/device-tree/compatible | head -1)
while read compatible file; do
[ "$compatible" != "$board" ] || cp "/etc/orchard/dtbs/$file" /run/orchard-kexec/pristine.dtb
done < /etc/orchard/pristine-map
fi
cat /proc/sys/kernel/random/boot_id > /run/orchard-kexec/boot-id
mount --move /run /newroot/run || stop 'cannot retain boot provenance'

# USB for the host: network (usb0) and a serial console (ttyGS0), named after
# the system, so `orchard devices` sees it. What runs on them is the system's.
usb_gadget() {
Expand Down
13 changes: 13 additions & 0 deletions boot/m1n1/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,16 @@ gives the same tree as Hoolock's tip before updating `sources.toml`.

Scratch stays in ignored `boot/m1n1/.work/<device>/`. `--resume` reuses it only
if the recorded patch set is unchanged.

## Resident PSCI on A7-A9

Orchard patch 0015 adds the resident EL3 PSCI monitor (CPU_ON, CPU_OFF,
AFFINITY_INFO); 0016-0019 make it the default whenever m1n1 is entered at EL3
and add SYSTEM_RESET (warm reboot back into m1n1, which boots the default BLS
entry with the last launch's DTB) and SYSTEM_OFF (halt). Any PSCI-aware
kernel reboots, powers off and kexecs through its ordinary paths; m1n1 takes
IPI-stopped CPUs back by trapping EL1 WFI/WFE to EL3. EL1/EL2 entries keep
the spin table. Payload variables (append to `m1n1.bin`, e.g. with
`psci-loader`): `psci=0` turns PSCI off, `psci_reset=0` keeps only the CPU
lifecycle (no WFI/WFE traps), `psci_reset=proxy` stops in the proxy after a
reset. 0020 marks retained hardware in the device tree after a re-entry.
Loading
Loading