# Patch reference Format 2 applies `[kernel] patch_series` in declared order. Series can reference profile and component patches. `unixnu status --json` reports the resolved sequence. Format 1 applies `patches/xnu/*.patch` and `kits/XnuPrelink/patches/*.patch` in filename order. ## Build and toolchain | Patch | Purpose | | --- | --- | | `apple-only-cpu-tunables` | Applies Apple CPU tunables only on `APPLE_ARM64_ARCH_FAMILY` | | `cxx-flag-dependencies` | Passes `CFLAGS` to C++ object builds in the Makefile templates | | `external-archive-dependencies` | Makes external archives relink dependencies of the kernel | | `kernel-sdk-root` | Separates `KERNEL_SDKROOT` from `SDKROOT` and adds include paths | | `local-availability` | Allows `XNU_AVAILABILITY_PL` to point at a local `availability.pl` | | `public-entitlements-header` | Adds the web browser entitlement names and uses `CoreEntitlements` | | `source-machine-layer` | Adds `CONFIG_APPLE_AMCC` and adjusts the BCM2837 config and file list | | `disabled-deferred-reclaim` | Removes an unused parameter that breaks the build | | `published-freezer-condition` | Fixes the preprocessor condition for the freezer default | ## Platform and CPU | Patch | Purpose | | --- | --- | | `architectural-timer-entry` | Skips the BCM2837 timer routing when the native architectural timer is enabled | | `armvirt-platform-personality` | Adds `ArmCpu`, `ArmVirtPlatform` and `ArmDTPlatform` personalities | | `native-smp-secondary` | Raises `MAX_CPUS` to 8 and uses MPIDR Affinity1 for BCM2837 secondary CPUs | | `native-arm-pan` | Enables ARMv8.1 PAN when `XNU_NATIVE_PAN` is set | | `native-dt-panic-region` | Reads the panic log region from the device tree and validates it | ## Four-kilobyte pages | Patch | Purpose | | --- | --- | | `native-4k-bootstrap-capacity` | Sizes the bootstrap page table pool for 4 KiB mappings and stops before overflow | | `native-4k-user-abi` | Sets the 4 KiB page shift for user maps, commpage and shared region | | `native-4k-signature-hash-cache` | Derives 4 KiB code signing hashes from verified 16 KiB blocks | | `pgz-aligned-validation` | Decodes the PGZ address before the alignment check | | `zzx-pmap-sync-64bit-pa` | Uses `ptoa()` to keep physical addresses above 4 GiB | | `non-apple-pmap-field` | Matches the non-PAC pmap field layout | | `non-apple-iommu-bootstrap` | Guards UAT and SART bootstrap and PPL code | | `non-apple-cache-monitor` | Guards the monitor enable and exports the cache clean symbol | ## Security and owner root | Patch | Purpose | | --- | --- | | `native-trust-cache-runtime` | Initializes the trust cache runtime on BCM2837 | | `source-corecrypto14-bootstrap` | Registers the source corecrypto provider at early boot | | `source-pthread-bootstrap` | Registers the source pthread component at early boot | | `native-aes-personality` | Adds the AES, VirtIO block, VirtIO console, RAM block and UFS personalities | | `offline-owner-root-crypto-probe` | Starts the verified root probe when `offline-owner-root-check` is set | | `offline-owner-root-binding-audit` | Compares the mounted root device with the verified root device | | `offline-owner-boot-manifest` | Publishes the owner boot manifest hash from the root and cache devices | | `offline-owner-cache-carrier` | Selects the owner dyld cache carrier and validates its device and path | | `offline-owner-systemos-mount` | Mounts the SystemOS cryptex and composes the root with the owner cache | | `offline-owner-z-air-init` | Initializes the Z air path for the owner root | | `offline-legacy-start` | Starts the legacy display probe after `IOKitBSDInit` | | `offline-component-load-probes` | Loads APFS, IOGPU and mobile graphics components with checkpoints | | `offline-native-gpu-broker` | Publishes the offline GPU broker after DTrace initialization | | `sheng-platform-power` | Runs the board PMGR integration before the calendar initialization | ## Graphics and display | Patch | Purpose | | --- | --- | | `offline-native-gpu-broker` | Starts the offline GPU broker | | `zzy-native-gpu-addon-mount` | Mounts read-only union views for GPU addon content and launch jobs | | `zzw-native-adreno-sandbox-grant` | Lets Adreno740 name the render server in `NativeSandboxGrantProcess` and open its user client past the sandbox | | `native-aes-personality` | Registers the storage and console personalities | ## Diagnostics | Patch | Purpose | | --- | --- | | `offline-pgz-alignment-probe` | Adds the PGZ allocation probe and checkpoints | | `native-work-interval-trace` | Records the last work interval results for the boot progress page | | `native-quiet-managed-page-report` | Stops the DEVELOPMENT managed-page report on GPU buffer and scanout mappings | | `zzz-boot-progress` | Adds boot progress checkpoints across the kernel startup path | ## Behavior fixes | Patch | Purpose | | --- | --- | | `native-priv-work-interval` | Grants `PRIV_WORK_INTERVAL` before policy evaluation | | `native-work-interval-soft-fail` | Soft-fails a refused CA client work interval | | `native-union-getattrlistbulk` | Continues a bulk directory read in the lower union directory | | `null-root-media` | Handles a null root in `IOService::setRootMedia` | | `published-freezer-condition` | Fixes the freezer default condition | ## Mockfs | Patch | Purpose | | --- | --- | | `mockfs-intermediate-lookup` | Allows lookups that are not the last component | | `mockfs-memory-device-width` | Uses the device path when the legacy ioctl cannot express a 64-bit address | | `mockfs-statfs` | Implements `vfs_getattr` | | `mockfs-typed-allocation` | Uses the struct type for `kalloc_type` and `kfree_type` | | `mockfs-test-file` | Adds `launchd` and `probe.bin` to the test file system | ## Prelink patches `kits/XnuPrelink/patches/`: | Patch | Purpose | | --- | --- | | `xnu-10063.141.1-security-init.patch` | Adds the early security initializer entry point | | `xnu-10063.141.1-sparse-index.patch` | Adds the sparse prelink index ABI | ## Add a patch 1. Edit `.cache/xnu-work`. 2. Generate the diff with `git diff`. 3. Place it in `patches/xnu/` with a name that orders it correctly. 4. Rebuild the kernel. A patch that depends on another patch applies after it. A patch that changes a region touched by `zzy` or `zzz` applies before them. ## Next steps - [Source and patches](/xnu/source-and-patches) - [Four-kilobyte pages](/xnu/four-k-page-tables) - [Build the kernel](/guide/build-kernel)