Skip to content

Kernel: rebase the P16 kernel onto the current Omarchy aarch64 recipe #15

Open

Description

@seankd3

The P16 kernel is the Omarchy linux-omarchy-aarch64 recipe at an old pinned commit, plus local patches. The current Omarchy recipe already carries fixes that this repo works around or lacks.

What the current recipe has that the P16 kernel lacks

Effect

Shape to decide

Move to the current recipe and keep only the P16 delta. The likely delta is the SSDT EC/battery override, the RSOC quirk and the i8042 gate (#12). This deletes the ports, and it makes #11 a short list.

Order

After #13 merges, and before the next kernel build. Sleep work on #8 (Change B, the deep-state override for sleep only) is measured on the rebased kernel. Prior art for #8 (comment 6677080990) says not to raise MPEL, because that hangs boot on the P14. The fix there is a table override that lists the deep states for sleep only.

Activity

  1. seankd3 commented on Nov 6, 2026

    @seankd3
    OwnerAuthor

    Prior art

    Verdict. One other P16 owner runs the Omarchy 7.3 recipe with a small P16 patch set, and has an open PR for it: omacom/omarchy-pkgs#1958. Three of its five platform patches are this repo's ASUS, GPIO and SPI patches, ported to 7.3. The other two fix the key-filter and fan-curve warnings of #9 and make the sensor hub enumerate. No source reports what works and what breaks on a P16 with the stock Omarchy kernel alone.

    Searched on 2026-11-05: the omarchy-pkgs recipe README, issues and PRs; omacom/omarchy issues and discussions; omacom/omarchy-iso N1X.md; pfeifferj/archlinuxarm-proart-p16; LeonMarzollDev/proart-p16-linux; ikegam/surface-ultra-misc; GitHub-wide search for H7607BA and "ProArt P16"; and this laptop's journal and packages. Each claim is marked [sourced] or [inferred].

    Another P16 on Omarchy 7.3

    1. linux-omarchy-aarch64: ProArt P16 sleep and ASUS platform support omacom/omarchy-pkgs#1958, "linux-omarchy-aarch64: ProArt P16 sleep and ASUS platform support", by jibanez-staticduo. Open, head f9a172da, last update 2026-11-05, no maintainer review. The machine is a P16 H7607BA on BIOS 303. The PR merges Omarchy master 2451efb6. [sourced]
    2. Platform patches, 9100 to 9104, 559 lines. [sourced]
      • 9100: ACPI_WMI without X86. ASUS WMI builds from drivers/platform/asus/ through #include of the x86 sources, so no file moves. It reads the 8-byte RSOC buffer and keeps the firmware charge limit at probe. The match is DMI vendor and product, with no BIOS pin.
      • 9101: MT8901 EINT-only pins 182 to 208.
      • 9102: SPI-HID ACPI IRQ retry.
      • 9103: no i8042 filter when i8042 is not reachable, the ROG Ally sleep hook only on x86, and each fan curve checked against its own fan.
      • 9104: SPI-HID _RST on the saved ACPI handle. With it, the sensor hub enumerates, and an ambient-light sensor reads from 0 to about 2175 lux.
      • The config sets ACPI_WMI, ASUS_WMI, ASUS_NB_WMI and SPI_HID_ACPI to m.
      • Its README-P16-PLATFORM.md names johannhartmann/asus-proart-p16-rtx-spark-linux 93e0d22 as the source of 9100 to 9102, adapted to 7.3.
      • It uses no ACPI table override. It is tested on BIOS 303 only.
    3. Sleep patches, 1120 to 1125, 5,544 lines. NVIDIA's hierarchical LPI port (NV-Kernels #586, #599, #601), used for suspend only. It turns itself on for P16 plus NVDA6210 after firmware checks. It also changes pciehp resume and the LPS0 timing. It writes no ELST or MPEL. Measured s2idle: 0.449 Wh over 1226 s, 1.32 W, and 1.51 W in an earlier run. [sourced] This is a kernel form of Suspend: one of four s2idle suspends did not resume #8's "deep states for sleep only". [inferred]
    4. GPU. The PR keeps Omarchy's prebuilt NVIDIA 615.78.08 package. [sourced]

    Stock Omarchy on N1X

    1. Omarchy master b4e7d40 (7.3-20, 2026-11-05) has 1105, 1106, 1107, 1108, 1111, 1112 and 1113. It has no ASUS WMI on ARM64: in 7.3, drivers/platform/wmi/Kconfig says depends on ACPI && X86, and drivers/platform/Makefile builds x86/ only for CONFIG_X86. SPI_HID_ACPI is off (config.aarch64:10309). 1012 names only the XPS 16. [sourced]
    2. 1106 on the P16 hides every Windows string on purpose. Its commit says "With none it falls back to Windows 8, as tested there with acpi_osi=!". Without asus-wmi, that sends volume keys as EC scancodes. omarchy-pkgs#1671 says 1106 "can only be tested on a P16 or a Lenovo Pro 9". [sourced]
    3. omarchy-iso N1X.md says Omarchy is "validated on the ASUS ProArt P14 (H7407BA)" and the Dell XPS 16 uses the same image. It does not name the P16. [sourced]
    4. NVIDIA in the recipe. Since #2056, the recipe also builds linux-omarchy-nvidia-open 615.78.08, with conflicts=(nvidia-open-dkms). [sourced]
    5. Surface Laptop Ultra (N1X). ikegam/surface-ultra-misc is "Tested on Omarchy (linux-omarchy 7.3)" and adds its own DKMS modules and udev rules. [sourced]
    6. Omarchy trackers. No issue or discussion reports a P16 N1X. The hits for "ProArt P16" are the AMD H7606 models. [sourced, absence]

    Other P16 projects

    1. pfeifferj/archlinuxarm-proart-p16. Arch Linux ARM, BIOS 300, last push 2026-10-19. It is the source of this repo's ACPI allocation fix. It has no 7.3 or Omarchy kernel. [sourced]
    2. LeonMarzollDev/proart-p16-linux. Ubuntu 26.04 with linux-nvidia 7.0, BIOS 300, last push 2026-10-25. Its issue Run the exact GEMM diagnostic with FP32 or BF16 inputs #2 reports a BIOS 303 behavior. [sourced]

    This laptop

    1. The @nv620 root has linux-omarchy 7.3-13 installed. No retained boot (-16 to 0) ran it. Boot -16 ran stock 7.2.8-23. [sourced]
    2. NVIDIA 620.70.06 DKMS is built only for 7.2.8-24. dkms status also lists nvidia/615.78.08: broken, with no source directory. No source shows 620.70.06 building against 7.3. [sourced]

    Effect on this issue

    • The P16 delta shrinks. 9100 to 9104 replace asus-arm64-combined.patch (20,418 lines), p16-virtual-gpio.patch and spi-acpi-irq-retry.patch. [inferred]
    • Omarchy's package plus DKMS cannot carry the delta. Three rows are built-in code, and the recipe's NVIDIA package conflicts with the 620.70.06 DKMS. [inferred from 5 and 8]
    • The rebased kernel must prove that NVIDIA 620.70.06 builds against 7.3 before it is installed. [inferred from 14]
    • For Suspend: one of four s2idle suspends did not resume #8, a measured P16 kernel form of "deep states for sleep only" exists in 1120 to 1125. Its admission on BIOS 300 is untested. [inferred]
    • The other P16 runs BIOS 303 with no table override. Whether 303 fixes the EC and battery methods is a question for Firmware: send the P16 ACPI table bugs to ASUS #10. [inferred]
  2. seankd3 commented on Nov 6, 2026

    @seankd3
    OwnerAuthor

    Shape card (not reviewed)

    Read basis: Omarchy master b4e7d40 (7.3-20), omarchy-pkgs#1958 head f9a172da, this repo fork/main 725000c (7.2.8-25). Prior art: comment 6677710345.

    Problem. The P16 kernel is a 446-file copy of a 7.2.8 Omarchy recipe plus 20,791 lines of local patches, so each Omarchy release is a hand port, and fixes that Omarchy and another P16 owner already carry are missing here.

    The thing. A P16 release: one pinned Omarchy commit, plus the P16 delta, under one number. The class is "a stored copy of upstream that drifts". The vendored recipe and the local ports of patches that now exist upstream are both samples.

    Same-cause sweep across open issues:

    What the P16 still needs beyond Omarchy master

    # Need File in this repo now After the change In master?
    1 ACPI-WMI and ASUS WMI on ARM64, the 8-byte RSOC read, the firmware charge limit kept at probe kernel/asus-arm64-combined.patch (20,418 lines, ASUS v3 file move) #1958 9100, copied unchanged No. 7.3 drivers/platform/wmi/Kconfig: depends on ACPI && X86
    2 No i8042 filter without i8042, Ally sleep hook on x86 only, each fan curve checked against its own fan #12's driver-row gate, inside the combined patch #1958 9103, unchanged No
    3 MT8901 EINT-only pins 182 to 208 (sensor hub IRQ 190) kernel/p16-virtual-gpio.patch #1958 9101, unchanged No. The pin table in 1000 stops at 181
    4 SPI-HID ACPI IRQ retry kernel/spi-acpi-irq-retry.patch #1958 9102, unchanged No
    5 SPI-HID _RST on the ACPI handle none #1958 9104, unchanged No
    6 PSYS and PSOC are not thermal zones kernel/p16-thermal.patch kept, on top of 1012 No. 1012 names only the XPS 16. 1012 is unchanged since the pin
    7 initrd ACPI overrides stay inside one EFI descriptor kernel/arm64-acpi-allocation.patch kept No
    8 SPI_HID_ACPI, ACPI_WMI, ASUS_WMI, ASUS_NB_WMI as m; ASUS_ARMOURY, ASUS_WMI_DEPRECATED_ATTRS, DELL_ARM64_HOTKEYS off kernel/PKGBUILD prepare() kept No. config.aarch64:10309
    9 Package linux-p16-asus-$pkgrel and its headers, release suffix -omarchy-p16-asus, no NVIDIA package kernel/PKGBUILD kept, and the NVIDIA package and its build steps are removed Not applicable
    10 SSDT override of the EC and battery methods (BIOS 300) acpi/, config/p16-acpi kept, SSDT only No
    11 acpi_osi="!Windows 2022" scripts/kernel_cmdline.py, config/limine-p16-keyboard.conf kept. 1106 then skips its table, and the hotkeys stay on ASUS WMI (#11) 1106 gives acpi_osi=! instead

    Rows 1 to 5 stay as unchanged copies of #1958 at f9a172da. They leave when #1958 merges and the pin moves past it. They touch files that the sleep patches 1120 to 1125 do not touch, so they apply without them.

    How the repo builds the kernel

    It keeps its own small delta on a pinned Omarchy commit. It does not install Omarchy's package plus DKMS, for two reasons:

    • Rows 3, 6 and 7 change built-in code (PINCTRL_MT8901=y, ACPI_THERMAL=y, arch/arm64). No module can carry them.
    • Omarchy's recipe ships NVIDIA 615.78.08 with conflicts=(nvidia-open-dkms). That would replace the GPU lab's 620.70.06.

    The build:

    1. sources.json pins the omarchy-pkgs commit, and f9a172da as the source of rows 1 to 5.
    2. scripts/build-kernel.sh fetches pkgbuilds/linux-omarchy-aarch64 at that commit into build/kernel/. A git commit hash names its content, so it needs no extra checksum.
    3. It copies the patch files of rows 1 to 7 from kernel/ into that directory.
    4. It applies kernel/PKGBUILD.patch (rows 8 and 9, plus source+= and the sums of rows 1 to 7) with --fuzz=0.
    5. It runs makepkg as today.

    After the change, kernel/ holds 8 files: 7 patches and PKGBUILD.patch. The next Omarchy release is a pin change. The build stops at the first hunk that no longer applies.

    Facts and reads

    • Stored. The Omarchy commit in sources.json. The 8 delta files. pkgrel, as a +pkgrel= line in PKGBUILD.patch.
    • Computed.
      • pkgver comes from the pkgver= context line of PKGBUILD.patch. The fuzz-0 apply proves that it matches the pinned upstream.
      • The kernel release is 7.3.0-26-omarchy-p16-asus. p16_release.py pads a two-part pkgver to x.y.0, as the kernel names it. Today it would compute 7.3-26-omarchy-p16-asus, which no kernel reports.
      • The sources.json kernel.version field is deleted. It is computed from the pin.

    The door

    Impossible states

    • A recipe file that differs from the pinned commit outside the delta. No copy exists to drift.
    • A delta hunk on changed upstream code. Fuzz 0 refuses it.
    • A release name that the built kernel does not report.
    • An Omarchy NVIDIA package next to nvidia-open-dkms 620.70.06. The delta builds none.

    Deletes

    • The 446 vendored recipe files in kernel/, its PKGBUILD included, and their SHA256SUMS entries.
    • asus-arm64-combined.patch (20,418 lines), p16-virtual-gpio.patch (128) and spi-acpi-irq-retry.patch (18). Rows 1 to 5 (559 lines) replace them.
    • ipv4-free-inet_opt-ireq_opt-after-rcu.patch. The fix is in v7.3.
    • asus-nb-wmi: install no i8042 key filter on a kernel built without i8042 #12's driver-row gate, and the asus_i8042_filter kallsyms check in check-issue-9.sh. 9103 gates the one install call for every driver row. That check tests an internal. The boot-log check for "Unable to install key filter" keeps the property that broke.
    • The DSDT override: patch_dsdt, its pins and baseline in acpi_builder.py, the DSDT pin in verify-boot.py, the DSDT member of the initrd archive, and the DSDT line in config/p16-acpi. Its only edit is the SSPM _OSI("Windows 2022") predicate. acpi_osi="!Windows 2022" already covers it, and 1106 covers it again without the argument. The 7.2.8-24 image keeps its own embedded copy.
    • power_wrap_drv.usb4_release=0 and mem_sleep_default=s2idle in PLATFORM_OPTIONS, config/00-omarchy-n1x-sleep.conf, and the usb4_release token in config/00-omarchy-n1x-usb4.conf. 1112 and 1113 make them defaults. Both names stay in the blocked list, so the new entry carries neither. The PCI hotplug padding stays.
    • --disable RUST. Master's config already has it off.
    • The kernel half of the USB4: a PCIe device connected after boot gets its PCIe tunnel #4 branch (the 7.2.8-25 port of 1105). Its scripts/usb4-pcie-hotplug-check moves into this change.

    Not deleted yet: the touchpad quirk. 1108 replaces it on 7.3, but 7.2.8-24 stays in the menu and still needs it. It leaves with 24.

    Sleep (#8)

    This change leaves the sleep-only deep states out. They stay #8 Change B, on top:

    • The candidate is now #1958's 1120 to 1125 (5,544 lines), which is measured on a P16, or the table override. Both change idle on the machine the GPU lab runs on.
    • Change B needs this kernel as its baseline, because the kernel now carries 1111. Its statement that the 1111 risks do not apply becomes false: the 4 s early wake after a lid close is now in scope.
    • One boot cannot tell two changes apart if it fails.

    Acceptance

    One build, one install, one reboot.

    Before the install. Nothing reboots in this part.

    1. makepkg --nobuild on the assembled recipe. Every source verifies, every patch applies at --fuzz=0, and it prints Prepared linux-p16-asus-26 version 7.3.0-26-omarchy-p16-asus. The .config has the row 8 values.
    2. One full build at nice -n 19 ionice -c3. It makes the kernel and headers packages only.
    3. NVIDIA 620.70.06 kernel-open compiles against the built tree. If it fails, the change stops before the install.
    4. python3 -m unittest discover -s tests passes.
    5. Preflight: the running boot is the @nv620 entry with RMSkipACPIBattCap=1, because the installer builds the new command line from /proc/cmdline. dkms status lists no broken entry, so the stale nvidia/615.78.08 entry is removed first.

    Install. One run of sudo scripts/install-kernel.sh. It builds DKMS 620.70.06 for the new release, checks UPower PowerOff (#16), and adds the new Limine entry. verify-boot.py confirms that the 7.2.8-24 entries and images are unchanged.

    One reboot into 7.3.0-26. Then this command passes:

    scripts/check-system.sh && scripts/check-issue-9.sh && scripts/usb4-pcie-hotplug-check && scripts/check-cuda.sh \
    && [ "$(busctl --system call org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower GetCriticalAction)" = 's "PowerOff"' ] \
    && grep -q 'rootflags=subvol=@nv620' /proc/cmdline \
    && grep -q 'RegistryDwords: "RMSkipACPIBattCap=1"' /proc/driver/nvidia/params \
    && grep -q ' 620\.70\.06 ' /proc/driver/nvidia/version \
    && [ "$(cat /sys/bus/acpi/devices/NVDA8400:00/status)" = 15 ] \
    && [ "$(cat /sys/power/mem_sleep)" = '[s2idle] deep' ] \
    && ! grep -qE 'PSYS|PSOC' /sys/class/thermal/thermal_zone*/device/path
    

    What each part proves:

    Recorded, not required: the touchpad properties value (85 means 1108 marked it a pressure pad), an IIO device from the sensor hub (9104), and cpufreq/boost for #7.

    The reboot happens while the GPU lab is idle.

    Rollback

    • The 7.2.8-24 package, its images, and its Limine entries stay untouched, including the GPU lab's @nv620 entry. verify-boot.py checks them before the reboot. The installer does not change the default entry.
    • If 7.3.0-26 does not boot or fails the check, select a 7.2.8-24 entry in the Limine menu (press Esc if it is hidden). Nothing else needs undoing to boot.
    • To remove 26, run sudo scripts/restore-install.sh from this change's checkout, because a checkpoint restores only with its own release (Kernel recipe follow-ups: 1105 port overflow, checkpoint restore across releases, stale SHA256SUMS #6, item 2).
  3. seankd3 commented on Nov 6, 2026

    @seankd3
    OwnerAuthor

    Shape card, v2 (not reviewed)

    v2 answers the six elegance findings on v1 (comment 6677724869):

    • E1: 9102 is dropped. The 7.3 SPI core already does its IRQ lookup.
    • E2: one reader for the release, from the assembled recipe.
    • E3: a pin change takes a new number.
    • E4: each deletion names its callers. The DSDT override stays until 7.2.8-24 leaves the menu.
    • E5: ASUS WMI on ARM64: fan-curve defaults, key filter and keyboard handshake fail #9 gets its results file, and the 80% limit is asserted.
    • E6: the checkpoint proves that the old menu entries survive.

    v2 replaces v1 in full.

    Read basis: Omarchy master b4e7d40 (7.3-20), omarchy-pkgs#1958 head f9a172da, this repo fork/main 725000c (7.2.8-25). Prior art: comment 6677710345.

    Problem. The P16 kernel is a 446-file copy of a 7.2.8 Omarchy recipe plus 20,791 lines of local patches. So each Omarchy release is a hand port, and fixes that Omarchy and another P16 owner already carry are missing here.

    The thing. A P16 release: one pinned Omarchy commit plus the P16 delta, under one number. The class is "a stored copy of upstream that drifts". The vendored recipe and the local ports of patches that now exist upstream are both samples.

    Same-cause sweep across open issues:

    What the P16 still needs beyond Omarchy master

    # Need File in this repo now After the change In master?
    1 ACPI-WMI and ASUS WMI on ARM64, the 8-byte RSOC read, the firmware charge limit kept at probe kernel/asus-arm64-combined.patch (20,418 lines, ASUS v3 file move) #1958 9100, copied unchanged No. In 7.3, drivers/platform/wmi/Kconfig has depends on ACPI && X86
    2 No i8042 filter without i8042, the Ally sleep hook on x86 only, each fan curve checked against its own fan #12's driver-row gate, inside the combined patch #1958 9103, unchanged No
    3 MT8901 EINT-only pins 182 to 208 (sensor hub IRQ 190) kernel/p16-virtual-gpio.patch #1958 9101, unchanged No. The pin table in 1000 stops at 181
    4 SPI-HID _RST on the ACPI handle none #1958 9104, unchanged No
    5 PSYS and PSOC are not thermal zones kernel/p16-thermal.patch kept, on top of 1012 No. 1012 names only the XPS 16, and it has not changed since the pin
    6 initrd ACPI overrides stay inside one EFI descriptor kernel/arm64-acpi-allocation.patch kept No
    7 SPI_HID_ACPI, ACPI_WMI, ASUS_WMI and ASUS_NB_WMI as m. ASUS_ARMOURY, ASUS_WMI_DEPRECATED_ATTRS and DELL_ARM64_HOTKEYS off kernel/PKGBUILD prepare() kept No. See config.aarch64:10309
    8 Package linux-p16-asus-$pkgrel and its headers, release suffix -omarchy-p16-asus, no linux-omarchy-nvidia-open package kernel/PKGBUILD kept. The NVIDIA package and its build steps leave, because the GPU lab runs nvidia-open-dkms 620.70.06 Not applicable
    9 SSDT override of the EC and battery methods (BIOS 300) acpi/, config/p16-acpi kept No
    10 acpi_osi="!Windows 2022" scripts/kernel_cmdline.py, config/limine-p16-keyboard.conf kept. 1106 then skips its table, and the hotkeys stay on ASUS WMI (#11) 1106 gives acpi_osi=! instead

    Rows 1 to 4 are unchanged copies of #1958 at f9a172da. They leave when #1958 merges and the pin moves past it. They touch no file that the sleep patches 1120 to 1125 touch, so they apply without those patches.

    The 9102 IRQ retry is not carried. In 7.3, spi_probe() calls acpi_dev_gpio_irq_get() when the IRQ is negative, and it returns -EPROBE_DEFER. The acceptance requires IRQ 190 bound to spi-MSFW1111.

    How the repo builds the kernel

    The repo keeps its own small delta on a pinned Omarchy commit. It does not install Omarchy's kernel package plus DKMS, because rows 3, 5 and 6 change built-in code (PINCTRL_MT8901=y, ACPI_THERMAL=y, arch/arm64). No module can carry them.

    The build:

    1. sources.json pins the omarchy-pkgs commit. It also records f9a172da as the source of rows 1 to 4.
    2. scripts/build-kernel.sh fetches pkgbuilds/linux-omarchy-aarch64 at that commit into build/kernel/. A git commit hash names its content, so no extra checksum is needed.
    3. It copies the six patch files from kernel/ into that directory.
    4. It applies kernel/PKGBUILD.patch with --fuzz=0. The patch holds rows 7 and 8, plus source+= and the sums of the six patches.
    5. It runs makepkg in build/kernel/. The packages land there.

    After the change, kernel/ holds 7 files: six patches and PKGBUILD.patch.

    Facts and reads

    • Stored:
      • the Omarchy commit, in sources.json;
      • the 7 delta files;
      • pkgrel, in PKGBUILD.patch.
    • Computed: release metadata, in one reader.
      • scripts/p16_release.py reads pkgver and pkgrel from the assembled build/kernel/PKGBUILD, which is the file makepkg builds from.
      • It pads a two-part pkgver to x.y.0, as the kernel names it: 7.3 becomes the release 7.3.0-26-omarchy-p16-asus. Today it would compute 7.3-26-omarchy-p16-asus, which no kernel reports.
      • common.sh takes PACKAGE, RELEASE and the package paths from p16_release.py. This deletes its second sed parser of kernel/PKGBUILD.
      • Without an assembled recipe, every script that needs the release stops with "build the kernel first".
      • The tests build a small recipe in a temporary repo root, as test_fresh_build_directory_has_compiling_users_owner already does.
    • Deleted: the sources.json kernel.version field. It is computed from the pin.

    The door

    Impossible states

    • A recipe file that differs from the pinned commit outside the delta. No copy exists to drift.
    • A delta hunk on changed upstream code. Fuzz 0 refuses it.
    • Two kernels built from different pins under one number.
    • A release name that differs between Python and shell, or that the built kernel does not report.
    • A completed install that dropped a rollback entry.

    Deletes, with their callers

    • The vendored recipe. The 446 vendored recipe files in kernel/, its PKGBUILD included, and their SHA256SUMS entries. Their callers change as follows:
      • install-kernel.sh takes its packages from build/kernel/, through common.sh.
      • build-kernel.sh imports the PGP keys from build/kernel/keys/.
      • The kernel-inputs test (tests/test_installation.py:409) checks PKGBUILD.patch and the six patches: each patch is in source+= with matching sums, and no patch is orphaned.
    • Replaced patches. asus-arm64-combined.patch (20,418 lines), p16-virtual-gpio.patch (128) and spi-acpi-irq-retry.patch (18) go. Rows 1 to 4 (541 lines) replace them.
    • The CVE patch. ipv4-free-inet_opt-ireq_opt-after-rcu.patch goes. The fix is in v7.3.
    • asus-nb-wmi: install no i8042 key filter on a kernel built without i8042 #12's gate and its check.
    • Two boot options. power_wrap_drv.usb4_release=0 and mem_sleep_default=s2idle leave PLATFORM_OPTIONS, because 1112 and 1113 make them defaults. Both names stay in the blocked list, so the new entry carries neither.
      • The kernel_cmdline tests change their expected output to match.
      • The 7.2.8-24 images keep their own embedded command lines.
      • The PCI hotplug padding stays.
    • --disable RUST. It goes, because master's config already has Rust off.
    • The USB4: a PCIe device connected after boot gets its PCIe tunnel #4 branch's kernel half. The 7.2.8-25 port of 1105 goes. Its scripts/usb4-pcie-hotplug-check moves into this change.

    Kept until 7.2.8-24 leaves the menu, by one rule: a workaround leaves when no kernel in the menu needs it.

    • The DSDT override. Its only edit is the SSPM _OSI("Windows 2022") predicate, which acpi_osi and 1106 now cover. But the shared p16-acpi hook would also rebuild 24's initramfs without it, and an earlier 24 entry carried a malformed acpi_osi token. So it stays, with its callers (build-acpi.py, install-kernel.sh, verify-boot.py, packages/build-local.py), until 24 leaves.
    • The touchpad quirk. 1108 replaces it on 7.3, and 24 still needs it.
    • The stock-kernel drop-ins. 00-omarchy-n1x-sleep.conf and the usb4_release token in 00-omarchy-n1x-usb4.conf apply only to Omarchy's own entries. They are out of scope.

    Sleep (#8)

    This change leaves the sleep-only deep states out. They stay #8 Change B, on top:

    • There are two candidates: #1958's 1120 to 1125 (5,544 lines, measured on a P16), or the table override. Both change idle on the machine the GPU lab runs on.
    • Change B needs this kernel as its baseline, because the kernel now carries 1111. Change B says the 1111 risks do not apply. That becomes false: the 4 s early wake after a lid close is now in scope.
    • If one boot carries both changes and fails, it cannot tell them apart.

    Acceptance

    One build, one install, one reboot.

    Before the install. Nothing reboots in this part.

    1. makepkg --nobuild on the assembled recipe. Every source verifies, and every patch applies at --fuzz=0. It prints Prepared linux-p16-asus-26 version 7.3.0-26-omarchy-p16-asus. The .config has the row 7 values.
    2. One full build at nice -n 19 ionice -c3. It makes the kernel and headers packages only.
    3. NVIDIA 620.70.06 kernel-open compiles against the built tree. If it fails, the change stops before the install.
    4. python3 -m unittest discover -s tests passes.
    5. Preflight:
      • The running boot is the @nv620 entry with RMSkipACPIBattCap=1. The installer builds the new command line from /proc/cmdline.
      • dkms status lists no broken entry. Remove the stale nvidia/615.78.08 entry first.

    Install. One run of sudo scripts/install-kernel.sh. It does three things:

    • It builds DKMS 620.70.06 for the new release.
    • It checks that UPower reports PowerOff (Power off at critical battery instead of suspending #16).
    • It adds the new Limine entry. verify_preserved then confirms that every earlier entry, image and the default are unchanged. The installer does not change the default.

    One reboot into 7.3.0-26. The owner records the #9 key results in ~/p16-issue9.txt, in the format the header of check-issue-9.sh gives. Then this command passes:

    scripts/check-system.sh && scripts/check-issue-9.sh ~/p16-issue9.txt && scripts/usb4-pcie-hotplug-check && scripts/check-cuda.sh \
    && [ "$(busctl --system call org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower GetCriticalAction)" = 's "PowerOff"' ] \
    && [ "$(cat /sys/class/power_supply/BAT0/charge_control_end_threshold)" = 80 ] \
    && grep -q 'rootflags=subvol=@nv620' /proc/cmdline \
    && grep -q 'RegistryDwords: "RMSkipACPIBattCap=1"' /proc/driver/nvidia/params \
    && grep -q ' 620\.70\.06 ' /proc/driver/nvidia/version \
    && grep -q 'spi-MSFW1111' /proc/interrupts \
    && [ "$(cat /sys/power/mem_sleep)" = '[s2idle] deep' ] \
    && ! grep -qE 'PSYS|PSOC' /sys/class/thermal/thermal_zone*/device/path
    

    What each part proves:

    Recorded, not required:

    The reboot happens while the GPU lab is idle.

    Rollback

    • The 7.2.8-24 package, its images and its Limine entries stay untouched, including the GPU lab's @nv620 entry. verify_preserved proves this before the reboot.
    • If 7.3.0-26 does not boot or fails the check, select a 7.2.8-24 entry in the Limine menu. Press Esc if the menu is hidden. Nothing else needs undoing before that boot.
    • To remove 26, run sudo scripts/restore-install.sh from this change's checkout. A checkpoint restores only with its own release (Kernel recipe follow-ups: 1105 port overflow, checkpoint restore across releases, stale SHA256SUMS #6, item 2).
  4. seankd3 commented on Nov 6, 2026

    @seankd3
    OwnerAuthor

    Shape card, v2a (not reviewed)

    v2a amends v2 (comment 6677912319) on the two findings from round 2. Everything else in v2 stands.

    E1. Sensor enumeration is required

    Acceptance. The required command gains one read after the /proc/interrupts line:

    && ls /sys/bus/hid/devices | grep -q '^001C:'
    

    001C is BUS_SPI. The read passes only when the sensor hub on SPI exposes a HID device, which is the enumeration that #1958 reports after 9104. A bound driver with zero children fails it. The /proc/interrupts read stays, so a failure shows whether the IRQ or the enumeration is missing.

    An IIO device from the sensor hub stays recorded, not required. The HID device is the enumeration.

    If it fails on BIOS 300, the change does not pass. Row 4 is then unproven here.

    E7. The release is read only where it is used, after assembly

    • common.sh keeps only the machine and directory helpers. It reads no release. This deletes its PKGVER, PKGREL, PACKAGE and RELEASE lines.
    • build-kernel.sh assembles build/kernel/ first and reads nothing about the release. dump-acpi.sh never reads it. A fresh checkout can start with no build cache.
    • The scripts that need the release take it from p16_release.py: the installer, the boot and update checks, check-system.sh and check-issue-9.sh. Shell scripts take it through one eval "$(python3 scripts/p16_release.py --shell)" line.
    • Without an assembled recipe, p16_release.py fails on the missing file. No separate refusal guard exists.

    Deletes in v2a

    • The release lines in common.sh.
    • v2's "build the kernel first" guard.
    • The interrupt-only sensor criterion.
  5. seankd3 commented on Nov 6, 2026

    @seankd3
    OwnerAuthor

    Shape card, v2b (not reviewed)

    v2b amends v2a (comment 6677961125) on round 3 finding E8. Everything else in v2 and v2a stands.

    E8. A reader failure stops the shell script

    In v2a, eval "$(python3 scripts/p16_release.py --shell)" hides the reader's exit status. eval then runs on empty output and returns success, even under set -e.

    The shell scripts that need the release now use two lines:

    release=$(python3 "$REPO/scripts/p16_release.py" --shell)
    eval "$release"
    

    A plain assignment returns the status of its command substitution. So under set -euo pipefail (from common.sh), a missing recipe stops the script at the first line, with the reader's FileNotFoundError. No guard is added.

    Deletes in v2b

    • The single-line eval "$(...)" form.
  6. seankd3 commented on Nov 6, 2026

    @seankd3
    OwnerAuthor

    Shape card review, elegance pass (GPT-6.1 Sol, high, read-only). PASS on shape card v2 (comment 6677912319) with amendments v2a (6677961125) and v2b (6677992626). This issue is Shaped.

    • Round 1, on v1 (6677724869): FAIL, six findings.
      • E1: 9102 duplicates the 7.3 spi_probe() IRQ lookup.
      • E2: the release metadata had no single reader.
      • E3: a pin change needs a new number.
      • E4: deletions stopped before their callers.
      • E5: check-issue-9.sh needs its results file, and the 80% limit was not asserted.
      • E6: nothing proved that the rollback menu entries survive.
    • Round 2, on v2: E2 to E6 closed. E1 kept: sensor enumeration was not required. New E7: common.sh would read the release before the recipe is assembled.
    • Round 3, on v2a: E1 and E7 closed. New E8: eval "$(...)" swallowed a reader failure.
    • Round 4, on v2b: E8 closed, with no new finding.

    The bugs pass runs on the commits.

  7. seankd3 commented on Nov 6, 2026

    @seankd3
    OwnerAuthor

    PR #18 is open and both review passes passed on fed2348. It is not merged. It merges after the full build boots and the live checks pass, because a kernel recipe is proven only by its boot.

    Disk: make clean in the old kernel/src/linux-7.2.8 tree removed 29.3 GB of objects. The source and .config are kept, and the tree is now 1.8 GB. The 7.2.8-23 and -24 packages remain for rollback. /home went only from 38 to 49 GB free, because btrfs snapshots still hold the old blocks. The 7.2.8 build tree needed about 34 GB, so the 60 GB gate stands. The build starts after the 4 TB SSD is installed and the footage library moves to it.

  8. seankd3 commented on Nov 7, 2026

    @seankd3
    OwnerAuthor

    One-time boot selection prepared for hardware acceptance of PR #18.

    The installed verifier passes for /boot/EFI/Linux/omarchy_linux-p16-asus-26.efi, its ACPI overrides and module dependencies, the Limine command line, and all six menu image hashes. Limine 12.9.6 reports one-shot entry support. bootctl set-oneshot Omarchy.linux-p16-asus-26 succeeded and EFI-variable readback matches that exact ID. The normal default_entry: 1 remains unchanged.

    Before reboot: boot 4cf963bd-ae0c-4352-bd05-415a7e8411b9, kernel 7.2.8-24-omarchy-p16-asus, root /@nv620, NVIDIA 620.70.06 nopsr experiment. AC0=1. The experiment unit is inactive and its GEMM/sampler have exited. No blocking shutdown inhibitor is listed.

    The reboot is authorized. Disk unlock still needs the owner. Post-boot kernel and hardware acceptance remains pending. This does not establish a GPU-cap fix.

  9. seankd3 commented on Nov 7, 2026

    @seankd3
    OwnerAuthor

    Post-boot hardware acceptance for PR #18, head 8a846bcdb7fd2917a460338f2d1cd6e31f28f1d9: INCOMPLETE. Boot and automatic system checks PASS.

    Live boot 4ac8cfa6-310b-44ee-8026-7bcc8180235f runs 7.3.0-26-omarchy-p16-asus, root /@nv620, NVIDIA 620.70.06, stock srcversion 5B0BEF94704B2BE1D8BB68B. The _PSR experiment module is no longer loaded. NVIDIA vermagic matches the running release. AC0=1. RMSkipACPIBattCap=1 remains loaded. The removed power_wrap_drv.usb4_release and mem_sleep_default arguments are absent from the actual command line. The one-shot EFI variable was consumed. Normal default_entry: 1 remains.

    scripts/check-system.sh exited 0. Installed touchpad policy and all three speaker-firmware hashes match. ASUS WMI binds at /sys/devices/platform/asus-nb-wmi, and the current boot logs input: Asus WMI hotkeys with no Unable to install key filter message. The ASUS-controls, charge-limit and power-profile services are active. systemctl --failed lists zero failed units.

    Separate live assertions:

    • UPower GetCriticalAction: s "PowerOff".
    • charge_control_end_threshold: 80.
    • mem_sleep: [s2idle] deep.
    • IRQ line: hardware IRQ 190, spi-MSFW1111:00, with recorded activity.
    • SPI HID sensor: 001C:0000:0100.0005, bound to hid-sensor-hub. The ALS IIO device resolves below that SPI device and reports name als. This establishes enumeration in addition to interrupt activity.
    • The thermal-zone paths contain neither PSYS nor PSOC.

    CUDA acceptance has a missing prerequisite: scripts/check-cuda.sh exits 127 because /opt/cuda/bin/nvcc does not exist. No toolkit was installed. A separate existing scripts/gemm.py 30 fp32 check ran with the existing voxtype cuBLAS path. It exited 0. Both warm-up and final checks sampled 66 entries with 0 mismatches. Header: driver API 13050, cuBLAS 130802, cc12.1, 48 SMs, default math mode. This is functional execution evidence, not completion of the compiler-based acceptance command.

    Remaining acceptance:

    • USB4 NVMe hotplug is UNTESTED. The owner has no enclosure available. No hotplug PASS is claimed.
    • The manual hotkey/backlight/Fn+Esc results file is absent. check-issue-9.sh acceptance remains pending. Driver binding and absence of the old filter warning do not replace those key checks.
    • The CUDA compiler-based acceptance command remains blocked by missing nvcc.

    The existing keyboard handshake warning is still present. It was outside the i8042 change's scope. Physical audio/touchpad behavior was not measured by the installed-file checks.

    A read-only clock query immediately after the 30-second CUDA check reported 754MHz, reason 0x400, temperature39.21C. This boot has not demonstrated a GPU-cap fix. PR #18 remains unmerged while its required hardware acceptance is incomplete.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions