Skip to content

The AML interpreter finished to ACPI 6.5: Load and _OSC, the namespace initialised, every address space, every event, and the bounds stated - #875

Merged
Japabu merged 38 commits into
mainfrom
wt/toyos-aml
Oct 13, 2026
Merged

Japabu merged 38 commits into
mainfrom
wt/toyos-aml

Conversation

@Japabu

@Japabu Japabu commented Oct 12, 2026 •

Copy link
Copy Markdown
Collaborator

This takes up issues/toyos-runs-the-machine-in-acpi-mode-and-interprets-its-aml.md. The design and its roast were accepted as one pull request of six stages (comment 6120208838, the owner's "do the full aml in one pr"), in the order M1 set (its result). The owner's rulings it builds on:

Every citation is to ACPI 6.5 (the UEFI Forum's release source, UEFI/ACPI-Specification-Release at 5dabe6f37f), to Intel's 302223-007 for a processor's _OSC and 332691-003 for the 8259's edge/level control, and to AMD's PPR 55922-A1 rev 3.06; where the specification is silent the site states ToyOS's own rule. No other implementation is cited, in the tree or in a commit message: round 4 re-cited every site that cited one, and round 6 reworded the seven commit messages that did. The reword changed no tree, so every commit before round 6 has a new hash: each is mapped to the one it became, trees equal, in round6/reword-map.txt. Round 5's head a99fa7c32 is bf6a51068, and round 4's 639ce1374 is ddc243eaf. This body names the new hashes. The evidence repository's earlier commits and files keep the old ones.

Each stage is its own commit, in the order built: S2, S3, S1, S4, S5, S6, then the rows and the issues. The three rulings of comment 6126449763 are the commits after the merge of main's 36aff86fc, three of code, one of issues and three of tests. Round 4's rulings, 6131125468, are 117858e2f, f61d38f94 and 637409f88. Round 5, on round 4's T14 boot, is 01523db5d and bf6a51068, test and issue alone. Round 6, on round 5's review, is 5352b0901 (the T14 bench by path), 1b94d83e1 (Server::loaded and the guest test cut) and 17c2cb89a (the issues).

What changed, by stage

S2: what AML may reach (d2006cc65, 15536e2e0)

  • Memory-mapped I/O. toyos_userbound::firmware::decide passes a read of memory the firmware's map types EfiMemoryMappedIO, on exactly the terms an unlisted register's read already passes:

    • at or above 1 MiB, inside the direct map;
    • typed uncacheable by the boot processor's range registers, on a machine none of whose CPUs holds different ones;
    • outside every page a device the kernel knows decodes in: a driven window, any function's memory BAR, the local APIC.

    A write there stays refused. The refusal of a register read the range registers would cache is renamed RegisterCached, since it now names a typed register too.

  • Why this bound, per the read ruling's condition. The ruling asked that the check be the best one, never reach RAM or a claimed device's BARs, and refuse everything else by name.

    • The regions a machine's tables define are known only to the holder's interpreter, which the kernel does not run. So the firmware's own declaration that a range is a device's registers is the bound the kernel can hold.
    • RAM is refused wherever any usable range of the map holds a byte. Every BAR of every function, claimed or not, is refused.
    • The bound stays address-only: issues/the-acpi-claims-holder-reaches-every-port-and-firmware-range-the-kernel-did-not-declare.md is unchanged.
  • Port writes, as the owner ruled (15536e2e0, 117858e2f). Every port write AML makes goes to the kernel, which decides it as it decides a read; the server's own list of three forwarded writes is gone.

    • The kernel refuses what it declares: COM1, the 8259 pair, the CMOS RTC, the PCI configuration mechanism, the i8042, the reset register, the PM1a control block and the TCO block read-only, and SMI_CMD, a byte to which it makes a firmware call or refuses by byte and by rate.
    • And toyos_userbound::firmware::PROTECTED, refused ProtectedPort: the 8259's edge/level control, ELCR1 and ELCR2 at 0x4D0 and 0x4D1, which Intel lists among the pair's own registers (332691-003 Vol. 2, §28.1, Table 28-1) and which the pair's declaration does not span. The kernel drives the pair, so it is the kernel's whole. The rule is ACPI 6.5's "exclusive access to any address accessed via fields declared in Operation Regions" (§5.5.2.4), which a port of a device the kernel drives cannot give AML.
    • The PIT is no longer on it, as ruled: the kernel neither declares nor drives it.
    • So the AMD bench's interrupt links, whose _STA write the PCI interrupt router's index at 0xC00, are written.
  • Memory writes. Every SystemMemory write goes to the kernel, which passes NVS and reserved memory and refuses the rest by name. A write outside every range the map lists comes back MemoryType and is denied and counted, as the owner ruled. Configuration writes stay denied.

S3: the namespace initialised (50abe34b5, 011714fd9)

  • The order (system/acpiserver/src/init.rs):
    1. _REG(2, 1) in each scope whose PCI_Config regions are not on a root bus naming a _BBN.
    2. \_SB._INI, unconditionally (§6.5.1).
    3. Each device's _STA and _INI by Table 6.67, parent before child, where an _INI is at or below it.
    4. Again over whatever a table loaded meanwhile added.
    5. _REG(3, 1) in each scope declaring an EmbeddedControl region, after every _INI, as the track's _REG bullet asked.
  • An embedded-controller read before its _REG (011714fd9, re-cited in f61d38f94).
    • ACPI 6.5 §6.5.4 makes a region available while its handler is ("When an operation region handler is unavailable, AML cannot access data fields in that region"), and _REG tells AML of the change. So an attached controller is reached whether or not its _REG has run, and with none attached the space is denied by name, where §6.5.4 has writes ignored and reads indeterminate.
    • §6.5.1's walk looks for _INI methods: OSPM "will examine each of the children of the device for _INI methods" and evaluates _STA "before evaluating the _INI object". So a device with no _INI at or below it is not examined. The server's first walk asked every device's _STA, so the AMD bench's battery _STA read the controller's space before the controller was attached, on a machine with no ECDT, and was refused.
    • §6.5.1 is silent on a _STA that is refused or no Integer. ToyOS's rule: it says nothing, so its device's _INI is not run and its children are examined, as Table 6.67's not-present-but-functional row has them.
  • The ECDT, permanent. The controller the ECDT names is attached before the first table loads (§6.5.4), with toyos_acpi::ecdt, which now reads EC_ID's path too. The namespace's PNP0C09 is served in its place once it is found.
  • _GLK. A _GLK of 1 takes the Global Lock around each transaction, AML's and the server's own queries alike, unless AML already holds it. issues/the-acpi-server-talks-to-the-embedded-controller-without-the-global-lock.md is closed by a_controller_that_wants_the_global_lock_is_reached_under_it_alone, whose stand-in controller refuses a transaction made without the lock.
  • A root bridge with no _BBN is found by _HID or a _CID, PNP0A03 or PNP0A08 (§6.1.5, §6.1.2), on bus 0. issues/qemus-interrupt-links-are-refused-by-the-aml-interpreter.md is closed by qemus_interrupt_link_reads_its_routing_register_below_a_bridge_named_by_its_hid, which evaluates QEMU 11.1.1's \_SB.LNKA._CRS to a buffer.
  • QEMU itself. q35's DSDT defines no _INI, so the walk examines no device there, pinned in qemus_tables_load_and_s5_is_what_its_kernel_decoded.
  • No thermal zone is examined. §6.5.1 puts _INI "under a device object", so the walk's examining Device and Processor objects alone is no weakness. The finding round 2 filed against another implementation's walk is deleted in f61d38f94.

S1: Load, two arenas, _OSC (d9ca8cd38, fb2bcceda)

  • Load (§19.6.76) loads from a SystemMemory region, a field unit of one at whole bytes, or a Buffer, at the root.
    • The header, length and checksum are checked before any of the block runs.
    • Its bytes come through a new host call. The server answers it only from memory Table 15.6 calls reserved or NVS: UEFI types 0, 5, 6, 8, 11, 12, 13 and 15 up, and 10.
    • A refused block loads false and keeps nothing. A bound of the evaluation, or Fatal, refuses the evaluation, whose steps, heap and time the block shares.
  • Two arenas. The namespace keeps a static arena, for what definition blocks define, and a method arena, for what an invocation defines, each a stack (§5.5.2, §5.5.2.3).
    • A NodeId names its arena in the top bit of a four-byte link, so a child map's entry is no wider.
    • A static object below a method's, or a static Alias of one, is refused.
  • _OSC. \_SB._OSC, then each Processor object's and ACPI0007 device's on an Intel processor (CPUID leaf 0), each queried and then committed with what the query offered of the claim.
    • The claims are one declaration a UUID (osc.rs), both 0, each bit's reason at the constant.
    • The answer is untrusted: its length must be what was passed, an unasked bit is dropped, and a failure or an unrecognised UUID is not committed.
    • Capabilities Masked does not repeat the query, since the T14 answers it to every set but one (M1).
    • The T14's processor query offers bit 0 alone on 14 of 24 processors whatever is asked, which decides what Design: idle CPUs enter the deep idle states the firmware declares #870's claim reaches: posted on #870.

S4: the grammar whole (800fb4770)

  • Every space of Table 5.182 reaches the host.
    • By offset, as an Address: SystemCMOS, PciBarTarget (the BAR at the region's offset, its length the BAR's), PCC, and the OEM-defined spaces.
    • Whole, as a Transfer: SMBus, IPMI, GeneralPurposeIO, GenericSerialBus, PlatformRtMechanism and FFixedHW. The field carries its AccessAs protocol (Table 5.184) and its Connection.
    • A BufferAcc field's Store answers the response its buffer became, as BUFF = (FLD = BUFF) reads it (§5.5.2.4.5.1, §5.5.2.4.7.1).
  • DataTableRegion (§19.6.25) and LoadTable (§19.6.77) find the table by signature, OEM ID and OEM Table ID (toyos_acpi::find_by_id). The server answers only where that table is in reserved or NVS memory, which the specification requires.
  • A reference to an unnamed object handed to the caller is Value::Unnamed.
  • Error::Unsupported is deleted. 0x5B 0x2A stays malformed.
  • The server serves SystemMemory, SystemIO, PCI_Config and EmbeddedControl, and denies every other space by name.

S5: every event served (b8dbbad45, bac5ccca6, 1b94d83e1)

  • Runtime GPEs (gpe.rs, §5.6.4).
    • Each \_GPE._Lxx/_Exx in GPE0 is enabled, except the controller's, one naming both triggers, and one the _PRW of a device other than the buttons and the PCI host bridge names (§5.6.4.2).
    • On its SCI: the enable cleared, an edge's status cleared, the method run, a level's status cleared, the enable set again.
    • A method refused leaves its GPE disabled, said by name.
  • Notifies are delivered after each evaluation:
    • a battery's or adapter's 0x80 reads the power sources again, and a battery's 0x81 finds them again;
    • \_SB's or a negotiated processor's 0x08 negotiates _OSC again;
    • a processor's 0x80 to 0x82 is counted, since nothing reads those states yet;
    • anything else is served by nothing and counted.
  • The SCI while a table loads. An evaluation's Sleep waits on the SCI to its deadline (sci::await_sleep).
    • A fixed-button press and the controller's GPE are taken as they latch, and served after the evaluation.
    • A press during the load powers the machine off once \_S5 is handed over.
    • Anything else keeps its status, with its enable cleared until the Sleep ends.
    • What latched during the load is served as soon as the load has handed \_S5 over, before the initialisation, whose evaluations may wait seconds: the presses its Sleeps took, then any SCI already latched (bac5ccca6).
    • That order is Server::loaded (1b94d83e1), generic over the Kernel, where it was main's. So the claim's SCI record (Kernel::latched), its acknowledgement (Kernel::ack) and the power-off asked of the supervisor (Kernel::power_off) are the Kernel's. Claim answers each as main did, and serve reads the SCI through the same latched. The host's Scripted answers no SCI, and where it is asked to power off it panics with POWERED_OFF, since a stop that happens takes the process with it.
    • a_press_latched_during_the_load_powers_off_before_an_ini_that_waits_on_the_firmware holds it. Its DSDT's top-level Sleep takes a press as the table loads (sleeps), and its \_SB.GLI._INI Acquires \_GL with no bound while the firmware holds it (takes: [Pending], and no release, so the wait runs to its deadline). The test hands the load to Server::loaded. The machine powers off, and the take is never asked.

S6: the bounds stated and read (cf4ed8a80, eb9419edc)

  • The heap. MAX_RUNNING states what a load or evaluation holds while it runs: MAX_LIVE and each part held beyond the meter's count, each bounded by another bound and named at the constant.
    • Mutexes held were bounded only by the steps, about 4.5 MiB. An evaluation now holds at most 256 acquisitions at once.
    • Every hostile fill of tests/heap.rs holds its peak to MAX_RUNNING under the counting allocator.
    • The server says both bounds, the heap held after the last table, and the static arena's slots.
  • Interpreter out of memory (eb9419edc, re-cited in f61d38f94). A method refused at the heap bound ends as any method ends: what it created is "destroyed on exit" (§5.5.2.3), and the Mutexes it holds are relinquished, since "Ownership of a Mutex must be relinquished before completion of any invocation" (§19.6.88) and a refused invocation is one the interpreter completes.
    • The interpreter already did each of these: its method arena is unwound however the term list ends, the frame drops its locals, and finish lets go of every Mutex and the Global Lock. The refusal is the bound's, by name.
    • a_method_refused_at_the_bound_gives_back_what_it_made fills the bound through one method's named object and locals while it holds \_GL, and reads the heap given back to the byte, the next Acquire of \_GL taking it from the firmware again, and a method of a mebibyte's buffer evaluated after. That is the track's exit for a full interpreter.
    • What a method stores into an object that outlives it stays: ACPI 6.5 takes no store back, and no store is journalled, as the orchestrator ruled in 6130332818.
  • The ten-second wait. The census says the longest wait an evaluation asked (Usage::waited_us).
  • The Global Lock. The host measures how long a take waited for the firmware's release, and the load's line says the firmware's longest hold.

Rows and issues (14241dc96, 7c46e7dac, 637409f88, 01523db5d, bf6a51068, 5352b0901, 17c2cb89a)

  • acpi_tables_loaded judges each bench by its own expectations (Bench, tests/toyos.rs), told apart by the kernel's line for the FADT's ACPI row. No row names its hardware yet, so one row reading either bench as itself costs neither a red.
    • It is held to the server's power sources: line, as ruled. The server writes that line, through the new acpiserver_api::POWER_SOURCES, on every machine with a battery once its tables, its initialisation, its _OSC and its first reading are done. acpi_hold waits for it, and the judge now passes the hold and reads the log only up to that line.

    • The T14: 14 blocks; both _OSCs with nothing refused; the one block its claims load, 459 bytes; every _INI run but the two the owner's ruling on a write outside the map refuses; _REG(3, 1) after them.

    • The AMD bench: 16 of 17 tables, SSDT8 refused as ruled, \_S5 handed. It now expects, as it expects SSDT8, the controller's _REG(3, 1) and the adapter's _PSR refused ConfigWrite, and its census to say no _REG run.

    • Each bench's ruled refusal is held exactly (5352b0901), where round 5 excused every line that carried its kind. A Ruled names:

      • its kind;
      • each line the server says of it by kind;
      • each evaluation it refuses, by the path the server says under OWN: the T14's \_SB_.PC00.LPCB.EC__._INI and \_SB_.PC00.LPCB.EC__.HKEY._INI, and the AMD bench's \_SB_.PCI0.LPC0.EC__._REG;
      • the census's count of it, x2 on the T14 and x1 on the AMD bench, compared whole.

      Every line that carries the kind is one of those, the census aside, and each of those is there. So a third path refused with the same kind, a path changed, or another count reds. The judge prints the lines that say a kind and none of the server's OWN lines. OWN moved to acpiserver-api, through which the judge reads it.

  • acpi_server_events keeps its claim, a count of the controller's queries, and waits for it in a job of its own, acpi_counted: the old hold's wait, renamed. It runs among the boot's rows' jobs, before acpi_hold. A count waits on an event an idle machine may never raise, so it holds no other row's boot: on the AMD bench, whose controller raised none in 52 s, acpi_tables_loaded rides an image without it.
    • Without this job, the ruled hold would end that row's boot about 0.1 s after the server's start on a run that names no members, before its count's 30 s interval, and the row would red.
  • acpi_server_events also reds on a runtime GPE whose method was refused, and prints each GPE served.
  • battery_read holds the T14's ruled refusal as acpi_tables_loaded does (01523db5d). Round 4's T14 boot read it red on "a SystemMemory write the kernel refused MemoryType, in unlisted firmware memory", the refusal the T14 Bench names and acpi_tables_loaded held met on the same boot. battery_on_metal kept its own refusal filter and never consulted the bench's. It now excuses only what T14.ruled says, by the same two paths, and holds it the same way, so a _BST refused with the ruled kind reds it.
  • The issues.
    • The track says what each stage still waits on. Its _REG bullet and the press's wait go with their exits met. Its full-interpreter bullet's exit is met as ruled, and its port-write bullet goes with the weakness.
    • Its finish and S3's exit now state the ruled state, with ACPI 6.5 deciding (17c2cb89a). Every block loads but SSDT8, and no method is refused but the four the rulings name, each expected by its bench by name. Each block a processor's _OSC loads under ToyOS's claims loads. Each _STA the walk reads is said, and each battery reading is read whole by §6.3.7 and §10.2.2, with no value unknown but the AMD bench's adapter, AC unknown under its ruled _PSR refusal (a785962f4). _CST, which the finish named before, is now among what is not in it: no part of the track reads it, and the deep idle states track does (Design: idle CPUs enter the deep idle states the firmware declares #870). They asked readings equal to Linux's before, which a reading under another OS cannot be the exit of (Another implementation's source is read only clean-room, and the tree names Linux only as a host platform or a libc interface #902).
    • issues/the-amd-benchs-ssdt8-scopes-a-controller-no-table-defines.md records SSDT8 as ruled, with its evidence and an exit; it cites §19.6.120, Scope.
    • issues/the-amd-benchs-ec-reg-and-psr-are-refused-for-a-write-to-the-root-complexs-index.md records the ruled config write's cost: _REG(3, 1) refused after it stored OKEC and BASC, _PSR refused so the adapter reads AC unknown, and every later evaluation that reaches ALIB refused.
      • It cites AMD's PPR 55922-A1 rev 3.06, which names 00:00.0 (1022h:1630h) the Root Complex (Table 13). The PPR documents no register at its 0xB8 or 0xBC, and nothing the mailbox selects there: its register namespaces are the cores', IO, MCA, SBTSI and SMU::THM.
      • Its exit is the ruled one: a mediation by a register map AMD documents, accepted and built, or the refusal stays.
    • issues/acpiserver-refuses-the-amd-benchs-dsdt-for-a-read-in-memory-mapped-io.md is closed (17c2cb89a). Its policy was ruled, firmware::decide holds it with a host test of each arm, and round 4's AMD boot read 16 of 17 tables loaded and \_S5 handed (Metal).
    • issues/the-t14s-controller-and-hotkey-ini-are-refused-for-writes-outside-the-map.md records the T14's ruled write and its cost, as the AMD bench's issue does (bf6a51068), and now records 6135767889 too: the GPIO community's pad and MCHBAR stay refused, isolation deciding. The T14 Bench points at it. Its exit: the hotkey device's write read on the T14, and a mediation by Intel's register maps accepted and built, or the refusal stays.

Checks

The oracle is the specification at each rule, cited at the code that encodes it. Intel's 332691-003 is the oracle for the ELCR's ports, and AMD's PPR for what the bench's root complex documents. The differential below is a measurement, kept in the evidence, and no row's oracle.

The differential is Linux on each bench, as the design names it: its blocks, its _STAs and its _CST, from the bench's own dump. The check runs outside the tree: the server's own modules, included by path and driven through their Kernel seam on each dump, in the server's start order. Each port access is now decided as the kernel decides it, by toyos_userbound::firmware::port over the kernel's declarations rebuilt from the bench's FADT; the TCO block, whose base the dump does not hold, is not among them (round2/check/ at da7107e246580b0d6e88748594da6677d32fe175; the T14's summary, the AMD's, its source). It ran at this branch's head b3bfc9742.

  • The T14.
    • All 14 tables load and \_S5 is 7.
    • The walk, now §6.5.1's search for _INI, reads 12 _STA (56 before) and runs 37 _INI. Two _INIs are refused at the ten-second wait, each calling the firmware through SMI_CMD, which nothing a dump holds answers.
    • Under ToyOS's claims both _OSCs are evaluated and one block loads, CPU0PSD, 459 bytes. That makes 6,989 objects in 8,192 static slots, the arena's capacity read, not derived.
    • Under every capability bit, all 8 blocks Linux loaded come out, by OEM Table ID and length.
    • _CST. Committed whole, every processor's _CST equals Linux's reading, 24 of 24: FFH MWAIT 0x0, 0x31 and 0x60, latencies 1, 253 and 1048. Queried first and committed with the offer, as ToyOS's rule does, C2 and C3 fall to I/O ports. The same holds of Intel's bits 3, 4, 8 and 9 alone. That is the note on Design: idle CPUs enter the deep idle states the firmware declares #870.
    • _STA. 53 equal Linux's and 3 differ:
      • one reads unlisted memory the dump does not hold;
      • one reads the controller's space, which the dump does not hold;
      • one is the Processor Aggregator, which asks _OSI ("Processor Aggregator Device"), a feature group the owner ruled ToyOS answers as Windows does, no (byte scan).
    • Ports. 20 reads and 9 writes are made, the controller's, and 20,002 bytes to SMI_CMD are firmware calls; the kernel refuses none.
  • The AMD.
    • 16 of 17 load, SSDT8 refused for its unresolvable Scope, and \_S5 is 5.
    • \_SB._OSC is negotiated, and its processors name none.
    • The walk reads 1 _STA, runs 12 _INI and refuses nothing. Before this round it refused 9 _STA: the 8 interrupt links' port write and the battery's read of the controller's space.
    • On the bench itself _REG(3, 1) and _PSR are refused, which the dump could not show: see Metal.
    • _STA. 57 equal Linux's, 27 differ and none is refused (49, 27 and 8 before):
      • the 8 interrupt links (PNP0C0F) evaluate and equal Linux's;
      • the battery (PNP0C0A) evaluates, 0xF where Linux reads 0x1F: bit 4, battery present, is a byte of the controller's space, which the dump does not hold;
      • 23 differ on its NVS, which the bench's /dev/mem refused again; two on RAM; one on a port the dump does not hold.
    • Ports. 33 reads and 27 writes are made, among them the interrupt router's index 0xC00, the CMOS upper bank's index 0x72 and the FCH's 0xCD6; the kernel refuses none.
    • _CST. All 16 equal Linux's registers, with the two latencies exchanged: ours C2 400 µs and C3 350, Linux's C2 350 and C3 400. Each of the 16 _CST bodies gives 400 before 350 in its bytes (byte scan). So the interpreter reads the table as written, and the order Linux lists is its own.

The negative control, round 4 (script, log). The round's production sources reverted onto its base, the merge 6c6016915, under 637409f88's tests: lib/userbound/src/firmware.rs, lib/acpiserver-api/src/lib.rs, and the server's and interpreter's re-cited files.

  • toyos-userbound reds, EXIT=101: the_8259s_edge_level_control_is_refused_though_nothing_declares_it finds the PIT refused.
  • acpiserver passes, EXIT=0: its change is the power sources line's spelling, through a constant, to the same bytes, and the rest is comments.
  • What the hold and the judges hold is read on metal alone; that is the request below.

The negative control, round 5 (script, run). Each patch applied as a checked patch, the judge run on a copy of round 4's T14 readback, the tree restored and clean after each:

  • 01523db5d reverted whole (patch): EXIT=1, battery_read red on the ruled refusal, as on the T14 (log);
  • the mutant filtering by the AMD bench's ruled refusal instead of the T14's (patch): EXIT=1, battery_read red on the same line, so an unruled refusal still reds it (log).

The negative control, round 6: the judges (script, exits). The script judged round 5's T14 readback, round 4's AMD readback, and four mutants of round 5's T14 log. It ran once with the fix at 5352b0901 and once with the fix reverted whole as a checked patch (judge-fix.patch), and the tree was restored after. Each command was cargo test --test toyos-build -- --metal --metal-readback <dir> <rows>:

readback rows fixed reverted
round 5's T14 acpi_tables_loaded acpi_server_events battery_read EXIT=0, 3 passed (log) EXIT=0
round 4's AMD acpi_tables_loaded EXIT=0 (log) EXIT=0
a third MemoryType refusal, of \_SB_.PC00.GFX0._INI (mutant) acpi_tables_loaded EXIT=1, "said the refusal the owner ruled of what he did not rule" (log) EXIT=0 (log)
HKEY._INI's path changed to HKEZ (mutant) acpi_tables_loaded EXIT=1, the same (log) EXIT=0 (log)
the census at x9 (mutant) acpi_tables_loaded EXIT=1, "refused other than … x2" (log) EXIT=0 (log)
a _BST refused MemoryType after the power sources line (mutant) battery_read EXIT=1, "refused something of this machine's AML" (log) EXIT=0 (log)

The negative control, round 6: the server. The test is new, and so is the method it calls, so the change reverted does not build under it. The mutant below is the control.

The negative control, earlier rounds. For the earlier stages, the three library crates' sources at the branch's base, main's cc52b456c, under its tests: every one fails to build, its tests naming the API this branch adds (log). For the three rulings, the round's production sources reverted onto the round's base cec32d058 under this head's tests (log): toyos-userbound's tests fail to build (ProtectedPort), and a_method_refused_at_the_bound_gives_back_what_it_made passes, because the end of a refused method the ruling asked was already the interpreter's; its control is the two r2 mutants. The server's tests live in its sources, so the mutants stand for it.

The mutants. 18 of the earlier stages, each a patch made by one edit, applied, run and reversed at b38a1381e (run.log), all red with EXIT=101:

  • S1: the checksum removed; method exit unwinding the static arena; the memory-type check removed; a commit sending the claim.
  • S2: MMIO refused; cached MMIO passing; SMI_CMD denied; memory writes denied.
  • S3: a functional, absent device's children unexamined; _REG before _INI; the bridge by _HID dropped; _GLK ignored.
  • S4: a Store answering its source; LoadTable's parameter unstored.
  • S5: a refused GPE still served; an edge's status uncleared; a Sleep taking no press.
  • S6: the Mutexes unbounded.

And 8 of the three rulings at b3bfc9742 (run.log, the guest one's, the patches and each log beside them), each red on the test named against it, the tree clean after each:

  • ports: PROTECTED passed (EXIT=101, the test round 4 renamed the_8259s_edge_level_control_is_refused_though_nothing_declares_it); the server denying 0xC00 itself (EXIT=101, every_port_write_is_asked_of_the_kernel_and_made_or_refused_as_it_answers);
  • out of memory: a refused method's arena kept (EXIT=101); a refused evaluation's Mutexes kept held (EXIT=101), both a_method_refused_at_the_bound_gives_back_what_it_made;
  • the walk: every device examined (EXIT=101, a_device_with_no_ini_at_or_below_it_is_not_examined); a refused _STA closing its subtree and a non-Integer one closing it (EXIT=101 each, a_refused_ini_or_sta_is_counted_and_the_walk_goes_on);
  • the guest one: the initialisation before the latched press (EXIT=1, acpi_press_across_a_lock_wait red, the server ended 101 in initialise). Round 6 cut that test, and the same mutant now reds the module test that holds its claim (below).

And 1 of round 6, at 17c2cb89a (patch, log): Server::loaded initialising before it serves the latched press, applied as a checked patch and reversed, the tree clean after. cargo test -p acpiserver, EXIT=101: a_press_latched_during_the_load_powers_off_before_an_ini_that_waits_on_the_firmware panics with "the firmware held the Global Lock 1s after a take left it the pending bit", where the machine should have powered off first.

And 1 of round 4, at 637409f88 (patch, run): PROTECTED emptied, the ELCR passed, EXIT=101 on the_8259s_edge_level_control_is_refused_though_nothing_declares_it, the tree clean after.

Two of round 2's were green first and their tests changed: a refused _STA's device had no child for the walk to skip (270e2a854), and a Mutex left held is acquired again without refusal, the interpreter's acquisitions being recursive, so the test now holds \_GL (a4111b4ca).

Gates

Round 6 changes production code (Server::loaded, three Kernel methods, OWN moved to acpiserver-api), so every gate ran again at its head 17c2cb89a, after the merge of main's 347e3313d (#874, #896). Each log is whole and ends in its exit (script, exits):

gate command exit
host suite cargo run -- --ci host EXIT=0 (log)
the server's tests cargo test -p acpiserver EXIT=0, 81 passed (log)
guest suite cargo test EXIT=0, 61 of 61 (log)
image, x86-64 cargo run -- --build-only EXIT=0 (log)
image, AArch64 cargo run -- --build-only --arch aarch64 EXIT=0 (log)
the judges on round 5's T14 and round 4's AMD readbacks, 5352b0901 cargo test --test toyos-build -- --metal --metal-readback <dir> <rows> EXIT=0 each (Checks)
metal staging, T14 cargo test --test toyos-build -- --metal --metal-readback <dir>/t14 acpi_tables_loaded acpi_server_events battery_read EXIT=2, staged and no machine touched (log)

The guest suite is one test shorter: acpi_press_across_a_lock_wait is cut.

Round 7 (a785962f4) changes only the track's issue, so the host suite alone ran again: cargo run -- --ci host, EXIT=0 (log).

Why a guest test is cut. acpi_press_across_a_lock_wait booted QEMU, launched acpiserver, pressed the button and judged the order of the server's main. That is an integration test of a userspace program, which Tests refuses (#890). A module test of the server now holds what it checked (S5): a_press_latched_during_the_load_powers_off_before_an_ini_that_waits_on_the_firmware, over Server<Scripted, Bytes>, which scripts each part of it:

  • the press a Sleep latched during the load;
  • the firmware's hold on the Global Lock;
  • a table whose _INI waits on that hold.

The wait for the firmware's release, which clears a latched press's enable and puts every enable back after, is sci::await_release's, which sci.rs's host tests already hold. The cut takes what only that test used: acpi_mediated's held arm, BootOptions::acpi_tables and its -acpitable plumbing, and the count power::acpi_tables_loaded answered. The merge of 858da4d42 later removed power::acpi_tables_loaded itself; see that section.

Its history, for the record: the guest suite found the order wanting at 52e84f36b (log), and bac5ccca6 set it. Once the walk became §6.5.1's search for _INI, the table had to declare \_SB.GLI for the test to meet a waiting _INI at all (b3bfc9742).

Why acpi_counted is a guest program. It is a metal row's job, as the hold it was split from is, and runs under QEMU nowhere: both are listed among the binaries no QEMU guest runs. No type or host test reaches the T14's controller raising a query.

No new dependency. Against main's tip the branch adds 4,751 lines and removes 893 (git diff --shortstat origin/main...17c2cb89a). Round 4 added 221 lines and removed 136: 32 of production code added and 33 removed, of which all but 7 are comments; 136 of tests and 63; and 82 of issues and 40. Round 5 adds 77 and removes 6, none of production code: 13 of tests and 6, and 64 of issues. Round 6 adds 199 and removes 320: 103 of production code and its in-file tests and 33, the module test 29 of those added; 72 of tests and 214, the cut guest test and what only it used; and 24 of issues and 73.

The merge of main's 858da4d42 (#893, #863)

c7f81824d merges origin/main at 858da4d42. #893's test sweep had cut or replaced some of the same ACPI tests this branch changed, and four files conflicted. Every hunk of both sides is accounted for below. #863 changes only issues and touched nothing here.

  • tests/common/power.rs. Integration tests outside the kernel are cut, and unit and module tests hold what they checked #893 cut acpi_power_button, machine_shutdown and ACPI_PRESSED, and this branch had left acpi_power_button as it was (main's side also kept acpi_tables_loaded for its T14 judge, which this branch rewrote), so it goes with main. Both sides cut acpi_press_across_a_lock_wait and its SSDT builder. This branch's change to acpi_tables_loaded, which now returns (), still applied, but with acpi_power_button gone the function had no caller: this branch's acpi_tables_on_metal reads each bench's blocks itself. So acpi_tables_loaded goes, along with ACPI_TABLE, ACPI_S5_HANDED and slp_typ_a, which only it used. ACPI_ARMED stays because main's stop test reads it.
  • tests/common/qemu.rs. Both sides removed BootOptions::acpi_tables and its -acpitable plumbing. Integration tests outside the kernel are cut, and unit and module tests hold what they checked #893 also removed second_slot, which this branch never touched. The file is main's.
  • tests/guest/rust-tests/src/bin/acpi_mediated.rs. Both sides removed the held arm, and Integration tests outside the kernel are cut, and unit and module tests hold what they checked #893 replaced it with the press arm that acpi_press_is_one_sci runs. Main's arm is kept whole. This branch's UnlistedCached → RegisterCached rename is kept as well; it merged cleanly in two places in this file.
  • tests/toyos.rs. One conflict, the RUST_SKIP comment on acpi_mediated: both sides removed acpi_press_across_a_lock_wait from it, and main names acpi_press_is_one_sci in its place. This branch's other hunks merged cleanly: acpi_hold/acpi_counted, the Bench judges, ACPI_MEDIATED_SAID and the cut test's dispatch.
  • The issue issues/toyos-runs-the-machine-in-acpi-mode-and-interprets-its-aml.md merged cleanly: Integration tests outside the kernel are cut, and unit and module tests hold what they checked #893's paragraph on the three T14 rows was added beside this branch's edits.

The first guest run of the merge was red (log, EXIT=1). Resolving acpi_mediated.rs by taking main's whole file had also dropped this branch's two clean RegisterCached hunks. A fresh three-way merge of that file, which takes main's side only inside conflicts, put them back (diff), and the merge commit was amended before it was pushed.

gate, at c7f81824d command exit
host suite cargo run -- --ci host EXIT=0 (log)
guest suite, whole cargo test --test toyos-build EXIT=0, 52 of 52, including acpi_mediated_access, acpi_lock_given_back_on_one_cpu, acpi_supply_outlives_holder, acpi_press_is_one_sci and the four machine_shutdown_* (log)
image, x86-64 cargo run -- --build-only EXIT=0 (log)
metal staging, T14 cargo test --test toyos-build -- --metal --metal-readback <dir> acpi_tables_loaded acpi_server_events battery_read EXIT=2: images staged, no machine touched (log, request.txt, image hash)
metal, T14 (run by the orchestrator) cargo test --test toyos-build -- --metal --metal-readback <dir>/t14 acpi_tables_loaded acpi_server_events battery_read EXIT=0 (the orchestrator's runner records it; the log carries none), 3 passed, 0 failed, 1 boot; readback image b54a97da…ce48, the staged one (judge, verdict, exit)

All exits are in exits.txt. The suite is 52 tests, not round 6's 61, because #893 cut tests on main.

What the merge changes on metal. The rows this branch owns, acpi_tables_loaded, acpi_server_events and battery_read, keep their definitions and judges. The image they boot changes:

So the T14 rows are staged again. The AMD bench's row is not staged.

Metal

Round 3 ran acpi_tables_loaded on both benches at b3bfc9742. The T14 was green (judge, readback). The AMD bench was red, exit 1 (log), on three findings, each now ruled and built:

  1. _REG(3, 1) and _PSR refused ConfigWrite, a write to 00:00.0 offset 0xB8, the root complex's index (what says so, the AML). It stays refused, the row expects it, and the issue records its cost.
  2. SSDT8 refused, as ruled before. Unchanged.
  3. test_rs_acpi_hold exited 101 waiting for a count the idle bench's controller never raised. The hold now waits on the server's power sources line, which that boot wrote at 6.738 s.

By hand on round 3's readbacks, the new judge passes both. On the AMD bench, every refused line up to the power sources line carries the ruled ConfigWrite, the census reads no _REG run with that refusal alone, and the rest is as before. On the T14, the ruled MemoryType refusal is met.

Round 4's request, staged from the committed tree at ddc243eaf (request.txt, metal-images.sha256):

06c6ec13e186d16059a6a630e5f7b48729f8a338bfd05ee07c17dbc8a32f2b5c  <dir>/t14/testcases/image.img
f1bea9833f3707dc72f19d82ff7a82359b9d7027bbaea77bbdae4d8449175702  <dir>/amd/testcases/image.img
  • The T14: acpi_tables_loaded, acpi_server_events and battery_read on t14/: jobs test_rs_acpi_counted, test_rs_acpi_hold, reboot.
  • The AMD bench: acpi_tables_loaded on amd/: jobs test_rs_acpi_hold, reboot. The T14's image would red it: acpi_counted there waits out the runner's bound on the idle controller, and the hold after it starts with none left.

Round 4 ran that request at ddc243eaf (639ce1374 before the reword). The orchestrator ran both boots and judges (comment 6135803137).

  • The AMD bench, cargo test --test toyos-build -- --metal --metal-readback <dir>/amd acpi_tables_loaded, judge EXIT=0, 1 passed, its readback's image the staged f1bea98… (judge log, masked). The log reads 16 of 17 tables loaded, SSDT8 refused, and \_S5 handed, SLP_TYPa=5, which the kernel keeps for PM1a 0x404. The refusals are the ruled ConfigWrite's alone: _REG in the census, x1, and _PSR.
  • The T14: acpi_tables_loaded and acpi_server_events passed, and battery_read was red, exit 1, on the ruled refusal its judge did not consult. 01523db5d fixed that judge, and round 4's readback judged again at bf6a51068 passed all three (log).

What the T14's ruled write is, established this round (round5/facts/):

  • The write. The T14's log: byte 0x01 to 0xFD6E0A70, refused MemoryType in unlisted firmware memory, inside the embedded controller's _INI, right after the server's first SMI_CMD write (0xF5). The T14's own tables, run on the host through the interpreter with a call trace, make the same write by EC._INI → HKEY.WGIN → BPWC(1) → \_SB.SGOV(0x0902000D, 1) (trace, what the host answered). WGIN calls BPWC(1) where WIN8 is set and the SMI handler's answer to WGSV(1) is not zero; BPWC drives the pad where that answer has bit 4 set and bit 7 clear (the bytes and their reading).
  • What owns it. \SBRG, the PCH's SBREG_BAR, is 0xFD000000, so the address is SBREG_BAR + Port ID 0x6E + 0xA70. Intel's 500 Series Chipset On-Package PCH datasheet vol. 2 (631120-002) §27.1 puts GPIO Community 0's registers at SBREG_BAR + its Port ID, and §27.1.114 names offset A70h PAD_CFG_DW0_GPPC_A_13, whose bit 0 is GPIOTXSTATE, "drive a level '1' to the TX output pad" (excerpts). The community's window, 0xFD6E0000 + 64 KiB, is one of four the GPIO controller \_SB.GPI0 (INT34C5) lists in its _CRS. It holds every pad of GPP_A, GPP_B and GPP_T with their ownership, locks and GPE routing, and the datasheet sets "no read/write restriction to the Pad Configuration register set during host ownership". No UEFI memory type holds it: the kernel refused the write as in memory the firmware's map does not list.
  • What decides it. ACPI 6.5 reserves no memory for this AML's use. The owner's ruling on a write outside every range the map describes decides it: refused by name and recorded, which the T14 Bench already expects. So the round changes no policy. Admitting it would mean admitting writes into the GPIO controller's window, every pad of the community, which a GPIO driver would claim. The owner ruled it stays refused, isolation deciding (6135767889).
  • The second refusal, HKEY._INI's, is not detailed on the T14: the server prints the detail of a kind's first refusal only. On the host the tables reach writes at MCHBAR + 0x5F50, 0x5F54, 0x59A0 and 0x59A1 through DYTC → SCPF → PL1S → CTCN, with MCHBAR assumed 0xFEDC0000. Intel's 11th Generation Core processor datasheet vol. 2 (631122) documents those offsets. It was fetched but is unread: the PDF is encrypted against the text extractor.

Round 5's request, staged from the committed tree at bf6a51068 (request.txt, metal-images.sha256): the T14 alone, acpi_tables_loaded, acpi_server_events and battery_read on t14/.

f187ceca20a17021efa98c4631c962095b06ce1dbce7c63b71d5e392e6a9517e  <dir>/t14/testcases/image.img

Round 5 ran that request at bf6a51068 (a99fa7c32 before the reword), the orchestrator's boot and judge (comment 6135803137). The readback's image hashes to the staged one, f187cec…. cargo test --test toyos-build -- --metal --metal-readback <dir>/t14 acpi_tables_loaded acpi_server_events battery_read, judge EXIT=0, 3 passed, 0 failed (judge log, masked). The T14:

  • read all 14 tables loaded and \_S5 handed, SLP_TYPa=7;
  • ran 24 processor _OSCs, query then commit, 0 refused, and loaded one block, of 459 bytes;
  • read in its census 37 _INI run and the two the rulings name refused, MemoryType x2, and _REG(3, 1) after them;
  • enabled 7 runtime GPEs;
  • read its battery at 98%, AC online;
  • drained the controller's query 0x4f 14 times.

Round 6's fixed judge on the same readback is green too (Checks).

Round 6's request, staged from the committed tree at 17c2cb89a (request.txt, metal-images.sha256): the T14 alone, acpi_tables_loaded, acpi_server_events and battery_read on t14/, since the server's start order is now Server::loaded.

7aa7fb2a739cfbf8a64bb55822dad1ea63b0382ba889a5ab90403c6d6b7e0123  <dir>/t14/testcases/image.img

Round 6 ran that request at 17c2cb89a, the orchestrator's boot and judge. cargo test --test toyos-build -- --metal --metal-readback <dir>/t14 acpi_tables_loaded acpi_server_events battery_read, judge EXIT=0 as the orchestrator recorded it, the log carrying none; 3 passed, 0 failed, 1 boot; verdict.txt passed; the readback's image hashes to the staged 7aa7fb2… (judge log, masked, exit, verdict and hashes). The T14:

  • read all 14 tables loaded and \_S5 handed, SLP_TYPa=7;
  • ran 24 processor _OSCs, query then commit, 0 refused, and loaded one block at run time, 0 refused;
  • read in its census 12 _STA, 37 _INI run and the two the rulings name refused, MemoryType x2, and _REG(3, 1) in one scope;
  • enabled 7 runtime GPEs;
  • read its battery at 98%, AC online;
  • took 29 SCIs and drained the controller's query 0x4f 13 times, the latched SCI read through Server::loaded and serve.

The AMD bench is not booted at 17c2cb89a. The branch's delta in each production path but two is patch-identical (git patch-id) at ddc243eaf, where round 4 booted it, and at 17c2cb89a: kernel/src/arch/x86_64/acpi_mode.rs, lib/acpi/src, lib/userbound/src, sdk/abi/src, system/acpiserver/aml/src, acpi_hold.rs and acpi_counted.rs. The two that differ, system/acpiserver/src and lib/acpiserver-api/src, carry round 6's change: the start order moved into Server::loaded unchanged, Claim's latched, ack and power_off with the bodies main and serve had, and OWN moved. None of it branches on the machine, and the T14 boot above runs each changed line metal reaches; no metal row reaches power_off. The AMD row's new judge holds on round 4's AMD readback (fixed-amd, EXIT=0, Checks).

Unsure

  • A protected port fails the access by name, as every refusal does, from the earlier rulings. No bench's AML reaches a protected or declared port on its dump.
  • acpi_counted is mine, not ruled. The ruling moved the hold to the power sources line; this keeps acpi_server_events' count waited for, in a job of its own. The other answer is to cut the count from that row's claim.
  • The TCO block's ports are not in the differential's declarations; on the metal T14 the kernel holds them read-only.
  • The T14's ruled write is not the one the ruling was taken on. M1 saw BTH0._INI write outside the map on the dump, with unrecorded reads answering 0. On the T14 the refused write is the controller's _INI driving a GPIO pad's TX state, in a window the GPIO controller's _CRS lists. The owner ruled the same on it and on the hotkey device's MCHBAR write (6135767889), and the row expects both _INIs by path.
  • What HKEY._INI's refused write is on the T14. The host run puts it in MCHBAR; the T14's log does not say. The ruling covers it either way.
  • Scripted powers off by panicking, so the module test reads the order off the panic's payload. A stop that happens never returns, so a test double that returned would model a stop that did not happen.
  • What \OSYS holds on the T14 before \_SB.PC00._INI runs. A dump taken under Linux holds the value after it.
  • The T14's second Linux boot, intel_idle.max_cstate=0, was never taken. The _CST comparison uses intel_idle's _ACPI states, which are _CST as Linux evaluated it.

🤖 Generated with Claude Code

https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy

Japabu added a commit that referenced this pull request Oct 12, 2026
The owner's "finish aml then continue working on deep idle states"
(#870, comment 6119715385) puts the interpreter ahead of deep idle
states. The track now says what finished is, held to ACPI 6.5 and to
Intel's 302223-007 for a processor's _OSC, and the six slices that reach
it in order, each with its exit: Load and _OSC first, which deep idle
waits on. The design, its citations and its roast are #875's body.

The track is assigned, S1 held by #875, and its Load bullet now names
its owner.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

Owner's ruling on what AML may reach (stage S2), recorded by the orchestrator. Asked whether the interpreter may read the device memory the firmware's own tables name (the AMD bench's DSDT needs it), checked against the firmware's declared reserved ranges, he answered: "if thats the best way to do it then yes". So the permission is conditional on S2's design showing that this check is the best one: it must be held to the specification, it must never reach RAM or a claimed device's BARs, and everything else must be refused by name. If the design finds a better boundary, it brings that to him instead.

M1's dumps are taken (default boot on both benches, steps 1–8 of the request). They are on the development host under <scratchpad>/aml/dumps/{t14,amd}/ and never go into the tree or onto GitHub. The AMD bench's Linux is not Ubuntu; its uname.txt records the kernel. The T14's second boot with intel_idle.max_cstate=0 has not been run yet.

@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

Design acceptance, recorded by the orchestrator for the owner. He was shown the design's decisions:

  • never evaluate _PDC;
  • claim through _OSC only what ToyOS implements;
  • let AML write firmware NVS where _OSC records into it.

He answered: "do the full aml in one pr". So the design is accepted, with one change: all six stages, S1–S6, are built and land as this one pull request, not as six. The M1 check's K1–K5 still decide the order inside it.

On the ECDT conflict (ACPI 6.5 §6.5.4 against his earlier "stopgap, delete later"), he ruled follow the spec. ECDT support is permanent, spec-required behaviour.

His ruling on what AML may reach (S2) is in the comment above.

@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

M1, part 1 of 3: the T14's log, whole. summary.txt as the harness (part 3) wrote it from the T14's dump at this PR's head 1547093ea (exit 0). Counts and decoded values only: the addresses stayed in a local file on the development host.

## inputs
definition blocks whole in tables/: 1
SSDT headers in headers/: 13; SSDTs whole in tables/: 0
NVS ranges in the map: 1; dumped with bytes: 1
an NVS dump of 12582912 bytes, wholly in a range the map types NVS

## load (unrecorded reads answered 0)
DSDT: loaded
  load access: PCI_Config read 4B configuration space [zero] x35
  load access: SystemMemory read 1B NVS [dump] x207
  load access: SystemMemory read 1B Reserved [zero] x4
  load access: SystemMemory read 2B NVS [dump] x7
  load access: SystemMemory read 2B Reserved [zero] x4
  load access: SystemMemory read 4B NVS [dump] x5
  load access: SystemMemory read 4B RAM [zero] x6
  load access: SystemMemory read 8B NVS [dump] x23

## namespace
objects: 5468
Processor objects: 24; ACPI0007 devices: 0
processors defining _OSC: 0
processors defining _PDC: 0
processors defining _CST: 0
processors defining _LPI: 0
processors defining _CPC: 0
_OSC objects anywhere: 2; \_SB_._OSC: true
_PDC objects anywhere: 0
_INI methods: 38; \_SB_._INI: false
[Deny] one _INI (the embedded controller device's) writes SMI_CMD 10001 times and ends Bound(more time asleep than one evaluation may spend)
[Deny] the _INIs in walk order: {"Bound(more time asleep than one evaluation may spend)": 1, "Host(unrecorded)": 5, "ran": 32}
    _INI access: EmbeddedControl read 1B EC space [denied] x1
    _INI access: PCI_Config read 4B configuration space [denied] x1
    _INI access: SystemIO write 1B SMI_CMD [accepted] x10001
    _INI access: SystemMemory read 1B NVS [dump] x157
    _INI access: SystemMemory read 2B NVS [dump] x67
    _INI access: SystemMemory read 4B NVS [dump] x24
    _INI access: SystemMemory read 4B RAM [denied] x1
    _INI access: SystemMemory read 4B unlisted [denied] x2
    _INI access: SystemMemory read 8B NVS [dump] x10029
    _INI access: SystemMemory write 1B NVS [accepted] x10
    _INI access: SystemMemory write 2B NVS [accepted] x9
    _INI access: SystemMemory write 8B NVS [accepted] x4
[Zero] one _INI (the embedded controller device's) writes SMI_CMD 10001 times and ends Bound(more time asleep than one evaluation may spend)
[Zero] the _INIs in walk order: {"Bound(more time asleep than one evaluation may spend)": 1, "ran": 37}
    _INI access: EmbeddedControl read 1B EC space [zero] x1
    _INI access: PCI_Config read 4B configuration space [zero] x1
    _INI access: SystemIO write 1B SMI_CMD [accepted] x10001
    _INI access: SystemMemory read 1B NVS [dump] x160
    _INI access: SystemMemory read 1B unlisted [zero] x1
    _INI access: SystemMemory read 2B NVS [dump] x72
    _INI access: SystemMemory read 4B NVS [dump] x42
    _INI access: SystemMemory read 4B RAM [zero] x2
    _INI access: SystemMemory read 4B unlisted [zero] x3
    _INI access: SystemMemory read 8B NVS [dump] x10032
    _INI access: SystemMemory write 1B NVS [accepted] x11
    _INI access: SystemMemory write 2B NVS [accepted] x9
    _INI access: SystemMemory write 4B unlisted [accepted] x2
    _INI access: SystemMemory write 8B NVS [accepted] x4

## load sites (raw byte scan of each block after its header)
DSDT: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 1, Unload 5B2A: 0
  the LoadTable 5B1F pair lies inside Name (WQBA, Buffer) of 2732 bytes: data

## Linux's run-time blocks (dynamic/)
blocks: 8
SSDT (Cpu0Cst): length 916 (header 916), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (Cpu0Ist): length 1599 (header 1599), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (Cpu0Psd): length 459 (header 459), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (Cpu0Hwp): length 651 (header 651), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (ApIst): length 2279 (header 2279), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (ApHwp): length 1162 (header 1162), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (ApPsd): length 1236 (header 1236), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (ApCst): length 1162 (header 1162), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
DWORDs in the NVS dump equal to a block's length, at any byte offset: 0
occurrences in the NVS dump of each block's OEM ID, OEM table ID, and "SSDT": {"ApCst": 0, "ApHwp": 0, "ApIst": 0, "ApPsd": 0, "Cpu0Cst": 0, "Cpu0Hwp": 0, "Cpu0Ist": 0, "Cpu0Psd": 0, "PmRef": 0, "SSDT": 0}

## the DSDT, then Linux's run-time blocks loaded onto it in Linux's order (no static SSDT)
Cpu0Cst: loaded
Cpu0Ist: loaded
Cpu0Psd: loaded
Cpu0Hwp: loaded
ApIst: loaded
ApHwp: loaded
ApPsd: loaded
ApCst: loaded
processors then defining _OSC: 0 of 24
processors then defining _PDC: 0 of 24
processors then defining _CST: 24 of 24
processors then defining _LPI: 0 of 24
processors then defining _CPC: 24 of 24
processors then defining _PSS: 24 of 24
processors then defining _PCT: 24 of 24
processors then defining _PSD: 24 of 24

## _OSC runs
targets: 1

### \_SB._OSC (platform UUID)
[Deny] caps 0, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps 0, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 0, query: Buffer(8): DWORD1=0x11 DWORD2=0x1 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x1 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 0, commit: Buffer(8): DWORD1=0x10 DWORD2=0x1 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x1 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 1, query: Buffer(8): DWORD1=0x11 DWORD2=0x2 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x2 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 1, commit: Buffer(8): DWORD1=0x10 DWORD2=0x2 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x2 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 2, query: Buffer(8): DWORD1=0x11 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x4 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 1B NVS [dump] x2
[Deny] caps bit 2, commit: Buffer(8): DWORD1=0x10 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x4 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 1B NVS [dump] x2
[Deny] caps bit 3, query: Buffer(8): DWORD1=0x11 DWORD2=0x8 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x8 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 3, commit: Buffer(8): DWORD1=0x10 DWORD2=0x8 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x8 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 4, query: Buffer(8): DWORD1=0x11 DWORD2=0x10 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x10 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 4, commit: Buffer(8): DWORD1=0x10 DWORD2=0x10 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x10 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 5, query: Buffer(8): DWORD1=0x1 DWORD2=0x20 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x20 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 4B NVS [dump] x1
    access: SystemMemory write 4B NVS [accepted] x1
[Deny] caps bit 5, commit: Buffer(8): DWORD1=0x0 DWORD2=0x20 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x20 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 4B NVS [dump] x1
    access: SystemMemory write 4B NVS [accepted] x1
[Deny] caps bit 6, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 6, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 7, query: Buffer(8): DWORD1=0x11 DWORD2=0x80 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x80 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 7, commit: Buffer(8): DWORD1=0x10 DWORD2=0x80 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x80 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 8, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 8, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 9, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 9, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 10, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 10, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 11, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 11, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 12, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 12, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 13, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 13, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 14, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 14, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 15, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 15, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 16, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 16, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 17, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 17, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 18, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 18, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 19, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 19, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 20, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 20, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 21, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 21, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 22, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 22, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps 0, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps 0, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 0, query: Buffer(8): DWORD1=0x11 DWORD2=0x1 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x1 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 0, commit: Buffer(8): DWORD1=0x10 DWORD2=0x1 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x1 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 1, query: Buffer(8): DWORD1=0x11 DWORD2=0x2 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x2 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 1, commit: Buffer(8): DWORD1=0x10 DWORD2=0x2 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x2 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 2, query: Buffer(8): DWORD1=0x11 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x4 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 1B NVS [dump] x2
[Zero] caps bit 2, commit: Buffer(8): DWORD1=0x10 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x4 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 1B NVS [dump] x2
[Zero] caps bit 3, query: Buffer(8): DWORD1=0x11 DWORD2=0x8 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x8 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 3, commit: Buffer(8): DWORD1=0x10 DWORD2=0x8 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x8 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 4, query: Buffer(8): DWORD1=0x11 DWORD2=0x10 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x10 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 4, commit: Buffer(8): DWORD1=0x10 DWORD2=0x10 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x10 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 5, query: Buffer(8): DWORD1=0x1 DWORD2=0x20 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x20 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 4B NVS [dump] x1
    access: SystemMemory write 4B NVS [accepted] x1
[Zero] caps bit 5, commit: Buffer(8): DWORD1=0x0 DWORD2=0x20 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x20 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 4B NVS [dump] x1
    access: SystemMemory write 4B NVS [accepted] x1
[Zero] caps bit 6, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 6, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 7, query: Buffer(8): DWORD1=0x11 DWORD2=0x80 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x80 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 7, commit: Buffer(8): DWORD1=0x10 DWORD2=0x80 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x80 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 8, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 8, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 9, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 9, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 10, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 10, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 11, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 11, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 12, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 12, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 13, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 13, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 14, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 14, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 15, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 15, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 16, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 16, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 17, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 17, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 18, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 18, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 19, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 19, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 20, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 20, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 21, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 21, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 22, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 22, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
runs whose trace or result differ with _INIs first: 0; K1-class writes over all runs: 0
commit writes an NVS field of 4 byte(s): 1 distinct value(s) over the cap sets, each holding the caps passed: false; the dump (Linux's run) holds 0x11040400 there
with that field read as 0, the commit of caps 0x20 writes [
    0x40000,
] there; the dump's value ANDed with it: [
    0x40000,
]

@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

M1, part 2 of 3: the AMD bench's log, whole. summary.txt as the harness (part 3) wrote it from the AMD bench's dump at this PR's head 1547093ea (exit 0). Counts and decoded values only.

## inputs
definition blocks whole in tables/: 1
SSDT headers in headers/: 16; SSDTs whole in tables/: 0
NVS ranges in the map: 2; dumped with bytes: 0

## load (unrecorded reads answered 0)
DSDT: loaded
  load access: SystemIO read 1B a port the FADT does not name [zero] x6
  load access: SystemIO write 1B a port the FADT does not name [accepted] x6
  load access: SystemMemory read 1B NVS [zero] x2
  load access: SystemMemory read 1B Reserved [zero] x1
  load access: SystemMemory read 4B RAM [zero] x1

## namespace
objects: 1999
Processor objects: 0; ACPI0007 devices: 16
processors defining _OSC: 0
processors defining _PDC: 0
processors defining _CST: 0
processors defining _LPI: 0
processors defining _CPC: 0
_OSC objects anywhere: 1; \_SB_._OSC: false
_PDC objects anywhere: 0
_INI methods: 3; \_SB_._INI: false
[Deny] the _INIs in walk order: {"Host(unrecorded)": 2, "ran": 1}
    _INI access: SystemMemory read 1B NVS [denied] x1
    _INI access: SystemMemory read 1B RAM [denied] x1
[Zero] the _INIs in walk order: {"ran": 3}
    _INI access: SystemMemory read 1B NVS [zero] x1
    _INI access: SystemMemory read 1B RAM [zero] x1

## load sites (raw byte scan of each block after its header)
DSDT: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0

## Linux's run-time blocks (dynamic/)
blocks: 0

## _OSC runs
targets: 0

@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

M1, part 3 of 3: the harness, whole. A scratch crate outside the tree that never lands. It depends by path on this PR's worktree at 1547093ea (system/acpiserver/aml and lib/acpi, read and not changed), built with cargo build --release (exit 0) and run as m1-harness <bench dump> <out> once per bench (exit 0 each). The manifest's two paths are written below relative to that worktree.

Cargo.toml:

[package]
name = "m1-harness"
version = "0.0.0"
edition = "2024"
publish = false

[dependencies]
toyos-aml = { path = "<the worktree>/system/acpiserver/aml" }
toyos-acpi = { path = "<the worktree>/lib/acpi" }

[workspace]

src/main.rs:

//! M1 (PR #875 section 5): ToyOS's interpreter as it stands, outside the tree,
//! with a tracing host, on one bench's dump. Writes two files: `local.txt`,
//! which carries addresses and stays on this host, and `summary.txt`, counts
//! and decoded values only.
//!
//! The host answers a SystemMemory read inside a dumped NVS range from the
//! dump (an overlay that the run's own writes update); every other read is
//! unrecorded and is refused (`deny`) or answered 0 (`zero`). Every write is
//! accepted and recorded.

use std::collections::{BTreeMap, BTreeSet};
use std::fmt::Write as _;
use std::fs;
use std::path::{Path, PathBuf};

use toyos_aml::{Access, Address, Denied, Error, Host, Interpreter, Kind, Value};

#[derive(Clone)]
struct Range {
    start: u64,
    end: u64,
    label: String,
}

fn memmap(dir: &Path) -> Vec<Range> {
    let text = fs::read_to_string(dir.join("memmap.txt")).expect("memmap.txt");
    text.lines()
        .filter(|l| !l.trim().is_empty())
        .map(|l| {
            let mut it = l.splitn(3, ' ');
            let hex = |s: &str| u64::from_str_radix(s.trim_start_matches("0x"), 16).expect("hex");
            let start = hex(it.next().unwrap());
            let end = hex(it.next().unwrap());
            Range { start, end, label: it.next().unwrap().trim().to_string() }
        })
        .collect()
}

fn short(label: &str) -> &'static str {
    match label {
        "System RAM" => "RAM",
        "Reserved" => "Reserved",
        "ACPI Non-volatile Storage" => "NVS",
        "ACPI Tables" => "ACPI-reclaim",
        "Unusable memory" => "Unusable",
        "Persistent Memory" | "Persistent Memory (legacy)" => "Persistent",
        "Soft Reserved" => "SoftReserved",
        _ => "other-label",
    }
}

fn mem_class(map: &[Range], at: u64, len: u64) -> &'static str {
    let last = at.saturating_add(len.saturating_sub(1));
    match map.iter().find(|r| r.start <= at && at <= r.end) {
        Some(r) if last <= r.end => short(&r.label),
        Some(_) => "straddles-ranges",
        None => "unlisted",
    }
}

#[derive(Clone)]
struct Nvs {
    base: u64,
    bytes: Vec<u8>,
}

fn nvs_dumps(dir: &Path) -> Vec<Nvs> {
    let mut out = Vec::new();
    for e in fs::read_dir(dir.join("nvs")).expect("nvs/") {
        let p = e.unwrap().path();
        if p.extension().and_then(|x| x.to_str()) != Some("bin") {
            continue;
        }
        let bytes = fs::read(&p).unwrap();
        if bytes.is_empty() {
            continue;
        }
        let stem = p.file_stem().unwrap().to_str().unwrap();
        let base = u64::from_str_radix(stem.trim_start_matches("0x"), 16).unwrap();
        out.push(Nvs { base, bytes });
    }
    out
}

/// The FADT's ports, by the role the FADT gives them (ACPI 6.5 §5.2.9, Table 5.9).
fn fadt_ports(dir: &Path) -> Vec<(u64, u64, &'static str)> {
    let f = fs::read(dir.join("tables/FACP")).expect("FACP");
    let u32_at = |o: usize| u32::from_le_bytes(f[o..o + 4].try_into().unwrap()) as u64;
    let u8_at = |o: usize| f[o] as u64;
    let mut out = vec![(u32_at(48), 1, "SMI_CMD")];
    let blocks: [(usize, usize, Option<usize>, &str); 8] = [
        (56, 88, Some(148), "PM1a_EVT"),
        (60, 88, Some(160), "PM1b_EVT"),
        (64, 89, Some(172), "PM1a_CNT"),
        (68, 89, Some(184), "PM1b_CNT"),
        (72, 90, Some(196), "PM2_CNT"),
        (76, 91, Some(208), "PM_TMR"),
        (80, 92, Some(220), "GPE0"),
        (84, 93, Some(232), "GPE1"),
    ];
    for (legacy, len, x, role) in blocks {
        let mut at = u32_at(legacy);
        if at == 0 {
            if let Some(x) = x {
                if f.len() >= x + 12 && f[x] == 1 {
                    at = u64::from_le_bytes(f[x + 4..x + 12].try_into().unwrap());
                }
            }
        }
        let n = u8_at(len);
        if at != 0 && n != 0 {
            out.push((at, n, role));
        }
    }
    if f.len() >= 129 && f[116] == 1 {
        out.push((u64::from_le_bytes(f[120..128].try_into().unwrap()), 1, "RESET_REG"));
    }
    out
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
enum Mode {
    Deny,
    Zero,
}

#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
struct Rec {
    space: &'static str,
    write: bool,
    width: u8,
    at: u64,
    class: String,
    value: u64,
    answered: &'static str,
}

struct Tracer {
    map: Vec<Range>,
    ports: Vec<(u64, u64, &'static str)>,
    overlay: Vec<Nvs>,
    mode: Mode,
    recs: Vec<Rec>,
    notifies: Vec<(String, u64)>,
    slept_ms: u64,
    stalled_us: u64,
    t: u64,
}

fn bytes_of(w: Access) -> u8 {
    match w {
        Access::Byte => 1,
        Access::Word => 2,
        Access::DWord => 4,
        Access::QWord => 8,
    }
}

impl Tracer {
    fn new(map: &[Range], ports: &[(u64, u64, &'static str)], nvs: &[Nvs], mode: Mode) -> Self {
        Tracer { map: map.to_vec(), ports: ports.to_vec(), overlay: nvs.to_vec(), mode, recs: Vec::new(), notifies: Vec::new(), slept_ms: 0, stalled_us: 0, t: 0 }
    }

    fn port_class(&self, p: u16, n: u8) -> String {
        let p = p as u64;
        for &(at, len, role) in &self.ports {
            if p >= at && p + n as u64 <= at + len {
                return role.to_string();
            }
        }
        "a port the FADT does not name".to_string()
    }

    fn classify(&self, at: Address, n: u8) -> (&'static str, u64, String) {
        match at {
            Address::Memory(a) => ("SystemMemory", a, mem_class(&self.map, a, n as u64).to_string()),
            Address::Io(p) => ("SystemIO", p as u64, self.port_class(p, n)),
            Address::PciConfig { segment, bus, device, function, offset } => (
                "PCI_Config",
                (segment as u64) << 40 | (bus as u64) << 32 | (device as u64) << 24 | (function as u64) << 16 | offset as u64,
                "configuration space".to_string(),
            ),
            Address::EmbeddedControl(o) => ("EmbeddedControl", o as u64, "EC space".to_string()),
        }
    }

    fn in_nvs(&mut self, a: u64, n: u8) -> Option<(usize, usize)> {
        self.overlay.iter().enumerate().find_map(|(i, d)| {
            let off = a.checked_sub(d.base)?;
            (off + n as u64 <= d.bytes.len() as u64).then_some((i, off as usize))
        })
    }
}

impl Host for Tracer {
    fn read(&mut self, at: Address, width: Access) -> Result<u64, Denied> {
        let n = bytes_of(width);
        let (space, addr, class) = self.classify(at, n);
        if let Address::Memory(a) = at {
            if let Some((i, off)) = self.in_nvs(a, n) {
                let mut v = 0u64;
                for k in 0..n as usize {
                    v |= (self.overlay[i].bytes[off + k] as u64) << (8 * k);
                }
                self.recs.push(Rec { space, write: false, width: n, at: addr, class, value: v, answered: "dump" });
                return Ok(v);
            }
        }
        match self.mode {
            Mode::Deny => {
                self.recs.push(Rec { space, write: false, width: n, at: addr, class, value: 0, answered: "denied" });
                Err(Denied("unrecorded".into()))
            }
            Mode::Zero => {
                self.recs.push(Rec { space, write: false, width: n, at: addr, class, value: 0, answered: "zero" });
                Ok(0)
            }
        }
    }

    fn write(&mut self, at: Address, width: Access, value: u64) -> Result<(), Denied> {
        let n = bytes_of(width);
        let (space, addr, class) = self.classify(at, n);
        if let Address::Memory(a) = at {
            if let Some((i, off)) = self.in_nvs(a, n) {
                for k in 0..n as usize {
                    self.overlay[i].bytes[off + k] = (value >> (8 * k)) as u8;
                }
            }
        }
        self.recs.push(Rec { space, write: true, width: n, at: addr, class, value, answered: "accepted" });
        Ok(())
    }

    fn sleep(&mut self, ms: u64) {
        self.slept_ms += ms;
        self.t += ms * 10_000;
    }

    fn stall(&mut self, us: u64) {
        self.stalled_us += us;
        self.t += us * 10;
    }

    fn timer(&mut self) -> u64 {
        self.t += 10;
        self.t
    }

    fn notify(&mut self, object: &str, value: u64) {
        self.notifies.push((object.to_string(), value));
    }

    fn global_take(&mut self) -> Result<(), Denied> {
        Ok(())
    }

    fn global_take_within(&mut self, _ms: u16) -> Result<bool, Denied> {
        Ok(true)
    }

    fn global_release(&mut self) -> Result<(), Denied> {
        Ok(())
    }
}

/// ToUUID's byte order (ACPI 6.5 §19.6.142).
fn uuid(s: &str) -> Vec<u8> {
    let h: Vec<u8> = s.split('-').flat_map(|g| (0..g.len()).step_by(2).map(move |i| u8::from_str_radix(&g[i..i + 2], 16).unwrap())).collect();
    let mut out = vec![h[3], h[2], h[1], h[0], h[5], h[4], h[7], h[6]];
    out.extend_from_slice(&h[8..16]);
    out
}

const PLATFORM: &str = "0811B06E-4A27-44F9-8D60-3CBBC22E7B48";
const INTEL: &str = "4077A616-290C-47BE-9EBD-D87058713953";

struct Bench {
    dir: PathBuf,
    map: Vec<Range>,
    ports: Vec<(u64, u64, &'static str)>,
    nvs: Vec<Nvs>,
    tables: Vec<(String, Vec<u8>)>,
}

fn tables(dir: &Path) -> Vec<(String, Vec<u8>)> {
    let mut ssdts: Vec<(u32, String)> = fs::read_dir(dir.join("tables"))
        .unwrap()
        .filter_map(|e| {
            let n = e.unwrap().file_name().into_string().unwrap();
            n.strip_prefix("SSDT").map(|k| (k.parse::<u32>().unwrap_or(0), n.clone()))
        })
        .collect();
    ssdts.sort();
    let mut out = vec![("DSDT".to_string(), fs::read(dir.join("tables/DSDT")).unwrap())];
    for (_, n) in ssdts {
        out.push((n.clone(), fs::read(dir.join("tables").join(&n)).unwrap()));
    }
    out
}

fn kind(e: &Error) -> String {
    match e {
        Error::Malformed { why, .. } => format!("Malformed({why})"),
        Error::NotFound(_) => "NotFound".into(),
        Error::Exists(_) => "Exists".into(),
        Error::Type(w) => format!("Type({w})"),
        Error::Rule(w) => format!("Rule({w})"),
        Error::Table(w) => format!("Table({w})"),
        Error::Fatal { .. } => "Fatal".into(),
        Error::Bound(w) => format!("Bound({w})"),
        Error::Unsupported(w) => format!("Unsupported({w})"),
        Error::Host(w) => format!("Host({w})"),
        Error::Bridge { .. } => "Bridge".into(),
    }
}

impl Bench {
    fn open(dir: &Path) -> Bench {
        Bench { dir: dir.to_path_buf(), map: memmap(dir), ports: fadt_ports(dir), nvs: nvs_dumps(dir), tables: tables(dir) }
    }

    fn host(&self, mode: Mode) -> Tracer {
        Tracer::new(&self.map, &self.ports, &self.nvs, mode)
    }

    /// Every table loaded into a fresh interpreter, in order; each one's result.
    /// The load answers an unrecorded read 0, whatever the run's mode: on
    /// metal the kernel answers it, and the dump does not hold it.
    fn load(&self, host: &mut Tracer) -> (Interpreter, Vec<(String, Result<(), Error>)>) {
        let mode = host.mode;
        host.mode = Mode::Zero;
        let r = self.load_in(host);
        host.mode = mode;
        r
    }

    fn load_in(&self, host: &mut Tracer) -> (Interpreter, Vec<(String, Result<(), Error>)>) {
        let mut i = Interpreter::new();
        let mut results = Vec::new();
        for (name, bytes) in &self.tables {
            let sig: [u8; 4] = bytes[..4].try_into().unwrap();
            let r = match toyos_acpi::Table::open(bytes.as_slice(), 0, &sig, 36) {
                Ok(t) => i.load(host, &t),
                Err(e) => Err(Error::Table(Box::leak(format!("{e:?}").into_boxed_str()))),
            };
            results.push((name.clone(), r));
        }
        (i, results)
    }
}

fn walk(i: &Interpreter) -> Vec<(String, u32, Kind)> {
    let mut w = i.walk().expect("walk");
    let mut out = Vec::new();
    while let Some(e) = w.next() {
        out.push((w.path().to_string(), e.depth, e.kind));
    }
    out
}

fn args(uuid_text: &str, caps: &[u32]) -> Vec<Value> {
    let mut b = Vec::new();
    for c in caps {
        b.extend_from_slice(&c.to_le_bytes());
    }
    vec![Value::Buffer(uuid(uuid_text)), Value::Integer(1), Value::Integer(caps.len() as u64), Value::Buffer(b)]
}

fn decode(v: &Result<Value, Error>) -> String {
    match v {
        Ok(Value::Buffer(b)) if b.len() == 8 => {
            let d1 = u32::from_le_bytes(b[0..4].try_into().unwrap());
            let d2 = u32::from_le_bytes(b[4..8].try_into().unwrap());
            format!("Buffer(8): DWORD1={d1:#x} DWORD2={d2:#x}")
        }
        Ok(Value::Buffer(b)) => format!("Buffer({})", b.len()),
        Ok(other) => format!("{other:?}"),
        Err(e) => format!("refused: {}", kind(e)),
    }
}

struct RunOut {
    inis: Vec<(String, String)>,
    result: Result<Value, Error>,
    recs: Vec<Rec>,
    notifies: Vec<(String, u64)>,
    slept_ms: u64,
    stalled_us: u64,
}

fn run(b: &Bench, mode: Mode, inis: &[String], target: &str, a: &[Value]) -> RunOut {
    let mut h = b.host(mode);
    let (mut i, _) = b.load(&mut h);
    let mut ini_out = Vec::new();
    for p in inis {
        let r = i.evaluate(&mut h, p, &[]);
        ini_out.push((p.clone(), match r { Ok(_) => "ran".into(), Err(e) => kind(&e) }));
    }
    let mark = h.recs.len();
    let n0 = h.notifies.len();
    let (s0, st0) = (h.slept_ms, h.stalled_us);
    let result = i.evaluate(&mut h, target, a);
    RunOut {
        inis: ini_out,
        result,
        recs: h.recs[mark..].to_vec(),
        notifies: h.notifies[n0..].to_vec(),
        slept_ms: h.slept_ms - s0,
        stalled_us: h.stalled_us - st0,
    }
}

fn tally(recs: &[Rec]) -> BTreeMap<String, usize> {
    let mut m = BTreeMap::new();
    for r in recs {
        let k = format!("{} {} {}B {} [{}]", r.space, if r.write { "write" } else { "read" }, r.width, r.class, r.answered);
        *m.entry(k).or_insert(0) += 1;
    }
    m
}

/// K1's classes: a write to SMI_CMD, to configuration space, or to memory
/// outside NVS and reserved.
fn k1_writes(recs: &[Rec]) -> Vec<&Rec> {
    recs.iter()
        .filter(|r| r.write)
        .filter(|r| match r.space {
            "SystemIO" => r.class == "SMI_CMD",
            "PCI_Config" => true,
            "SystemMemory" => !(r.class == "NVS" || r.class == "Reserved"),
            _ => false,
        })
        .collect()
}

fn scan_ops(bytes: &[u8]) -> BTreeMap<&'static str, Vec<usize>> {
    let mut m: BTreeMap<&'static str, Vec<usize>> = BTreeMap::new();
    for k in ["Load 5B20", "LoadTable 5B1F", "DataTableRegion 5B88", "Unload 5B2A"] {
        m.insert(k, Vec::new());
    }
    for i in 36..bytes.len().saturating_sub(1) {
        if bytes[i] != 0x5B {
            continue;
        }
        let k = match bytes[i + 1] {
            0x20 => "Load 5B20",
            0x1F => "LoadTable 5B1F",
            0x88 => "DataTableRegion 5B88",
            0x2A => "Unload 5B2A",
            _ => continue,
        };
        m.get_mut(k).unwrap().push(i);
    }
    m
}

/// The nearest `Name (XXXX, Buffer (...))` before `at` (DefName and DefBuffer,
/// ACPI 6.5 §20.2.5) whose PkgLength covers `at`: its name and length.
fn in_named_buffer(b: &[u8], at: usize) -> Option<([u8; 4], usize)> {
    let lead = |c: u8| c.is_ascii_uppercase() || c == b'_';
    let tail = |c: u8| lead(c) || c.is_ascii_digit();
    let pkglen = |p: usize| -> Option<(usize, usize)> {
        let l = *b.get(p)?;
        let n = (l >> 6) as usize;
        if n == 0 {
            return Some(((l & 0x3F) as usize, 1));
        }
        let mut v = (l & 0x0F) as usize;
        for i in 0..n {
            v |= (*b.get(p + 1 + i)? as usize) << (4 + 8 * i);
        }
        Some((v, n + 1))
    };
    for p in (36..at).rev() {
        if b[p] == 0x08 && p + 6 < b.len() && lead(b[p + 1]) && b[p + 2..p + 5].iter().all(|c| tail(*c)) && b[p + 5] == 0x11 {
            let (len, _) = pkglen(p + 6)?;
            if p + 6 + len > at {
                return Some((b[p + 1..p + 5].try_into().unwrap(), len));
            }
        }
    }
    None
}

fn find_all(hay: &[u8], needle: &[u8]) -> Vec<usize> {
    if needle.is_empty() || hay.len() < needle.len() {
        return Vec::new();
    }
    let first = needle[0];
    let mut out = Vec::new();
    let mut i = 0;
    while i + needle.len() <= hay.len() {
        if hay[i] == first && &hay[i..i + needle.len()] == needle {
            out.push(i);
        }
        i += 1;
    }
    out
}

fn main() {
    let mut argv = std::env::args().skip(1);
    let dir = PathBuf::from(argv.next().expect("bench dump dir"));
    let out = PathBuf::from(argv.next().expect("output dir"));
    fs::create_dir_all(&out).unwrap();
    let child = std::thread::Builder::new().stack_size(256 << 20).spawn(move || body(&dir, &out)).unwrap();
    child.join().unwrap();
}

fn body(dir: &Path, out: &Path) {
    let b = Bench::open(dir);
    let mut local = String::new();
    let mut sum = String::new();

    // --- What the dump holds.
    writeln!(sum, "## inputs").unwrap();
    writeln!(sum, "definition blocks whole in tables/: {}", b.tables.len()).unwrap();
    let headers: Vec<String> = fs::read_dir(dir.join("headers")).unwrap().map(|e| e.unwrap().file_name().into_string().unwrap()).collect();
    let ssdt_headers = headers.iter().filter(|n| n.starts_with("SSDT")).count();
    writeln!(sum, "SSDT headers in headers/: {ssdt_headers}; SSDTs whole in tables/: {}", b.tables.len() - 1).unwrap();
    writeln!(sum, "NVS ranges in the map: {}; dumped with bytes: {}", b.map.iter().filter(|r| r.label == "ACPI Non-volatile Storage").count(), b.nvs.len()).unwrap();
    for n in &b.nvs {
        writeln!(local, "nvs dump base={:#x} len={:#x} class={}", n.base, n.bytes.len(), mem_class(&b.map, n.base, n.bytes.len() as u64)).unwrap();
        writeln!(sum, "an NVS dump of {} bytes, wholly in a range the map types {}", n.bytes.len(), mem_class(&b.map, n.base, n.bytes.len() as u64)).unwrap();
    }

    // --- The load.
    let mut h = b.host(Mode::Deny);
    let (mut i, loaded) = b.load(&mut h);
    writeln!(sum, "\n## load (unrecorded reads answered 0)").unwrap();
    for (n, r) in &loaded {
        writeln!(sum, "{n}: {}", match r { Ok(()) => "loaded".to_string(), Err(e) => format!("refused: {}", kind(e)) }).unwrap();
    }
    for (k, v) in tally(&h.recs) {
        writeln!(sum, "  load access: {k} x{v}").unwrap();
    }
    for r in &h.recs {
        writeln!(local, "load access {r:?}").unwrap();
    }

    // --- The namespace.
    let entries = walk(&i);
    let paths: BTreeSet<String> = entries.iter().map(|(p, _, _)| p.clone()).collect();
    let kind_of: BTreeMap<String, Kind> = entries.iter().map(|(p, _, k)| (p.clone(), *k)).collect();
    let mut processors: Vec<String> = entries.iter().filter(|(_, _, k)| *k == Kind::Processor).map(|(p, _, _)| p.clone()).collect();
    let mut hid_host = b.host(Mode::Deny);
    for (p, _, k) in &entries {
        if *k == Kind::Device && paths.contains(&format!("{p}._HID")) {
            if let Ok(Value::String(s)) = i_eval_hid(&mut i, &mut hid_host, p) {
                if s == b"ACPI0007" {
                    processors.push(p.clone());
                }
            }
        }
    }
    writeln!(local, "_HID evaluations made {} accesses", hid_host.recs.len()).unwrap();
    writeln!(sum, "\n## namespace").unwrap();
    writeln!(sum, "objects: {}", entries.len()).unwrap();
    writeln!(sum, "Processor objects: {}; ACPI0007 devices: {}", entries.iter().filter(|(_, _, k)| *k == Kind::Processor).count(), processors.len() - entries.iter().filter(|(_, _, k)| *k == Kind::Processor).count()).unwrap();
    let mut defines: BTreeMap<&str, usize> = BTreeMap::new();
    for p in &processors {
        writeln!(local, "processor {p}").unwrap();
        for m in ["_OSC", "_PDC", "_CST", "_LPI", "_CPC"] {
            if paths.contains(&format!("{p}.{m}")) {
                *defines.entry(m).or_insert(0) += 1;
            }
        }
    }
    for m in ["_OSC", "_PDC", "_CST", "_LPI", "_CPC"] {
        writeln!(sum, "processors defining {m}: {}", defines.get(m).copied().unwrap_or(0)).unwrap();
    }
    let oscs: Vec<&String> = paths.iter().filter(|p| p.ends_with("._OSC")).collect();
    writeln!(sum, "_OSC objects anywhere: {}; \\_SB_._OSC: {}", oscs.len(), paths.contains("\\_SB_._OSC")).unwrap();
    for p in &oscs {
        writeln!(local, "_OSC at {p} kind={:?}", kind_of[*p]).unwrap();
    }
    let pdcs = paths.iter().filter(|p| p.ends_with("._PDC")).count();
    writeln!(sum, "_PDC objects anywhere: {pdcs}").unwrap();
    // §6.5.1: \_SB._INI first; then the rest, parent before child (walk order).
    let mut inis: Vec<String> = entries.iter().filter(|(p, _, k)| p.ends_with("._INI") && *k == Kind::Method).map(|(p, _, _)| p.clone()).collect();
    if let Some(at) = inis.iter().position(|p| p == "\\_SB_._INI") {
        let sb = inis.remove(at);
        inis.insert(0, sb);
    }
    writeln!(sum, "_INI methods: {}; \\_SB_._INI: {}", inis.len(), paths.contains("\\_SB_._INI")).unwrap();
    for p in &inis {
        writeln!(local, "_INI at {p}").unwrap();
    }
    for mode in [Mode::Deny, Mode::Zero] {
        let mut hh = b.host(mode);
        let (mut ii, _) = b.load(&mut hh);
        let mark = hh.recs.len();
        let mut outcomes: BTreeMap<String, usize> = BTreeMap::new();
        for p in &inis {
            let before = hh.recs.len();
            let r = ii.evaluate(&mut hh, p, &[]);
            let k1 = k1_writes(&hh.recs[before..]).len();
            let smi = hh.recs[before..].iter().filter(|x| x.write && x.class == "SMI_CMD").count();
            writeln!(local, "[{mode:?}] _INI {p}: {:?}; accesses {}, SMI_CMD writes {smi}, K1-class writes {k1}", r.as_ref().map(|_| ()).map_err(kind), hh.recs.len() - before).unwrap();
            if smi > 0 {
                writeln!(sum, "[{mode:?}] one _INI ({}) writes SMI_CMD {smi} times and ends {}", if p.contains(".EC__.") || p.ends_with(".EC__._INI") { "the embedded controller device's" } else { "another device's" }, match &r { Ok(_) => "having run".to_string(), Err(e) => kind(e) }).unwrap();
            }
            *outcomes.entry(match r { Ok(_) => "ran".into(), Err(e) => kind(&e) }).or_insert(0) += 1;
        }
        writeln!(sum, "[{mode:?}] the _INIs in walk order: {outcomes:?}").unwrap();
        for (k, v) in tally(&hh.recs[mark..]) {
            writeln!(sum, "    _INI access: {k} x{v}").unwrap();
        }
    }

    // --- The load sites, by raw opcode bytes: no false negative.
    writeln!(sum, "\n## load sites (raw byte scan of each block after its header)").unwrap();
    for (n, bytes) in &b.tables {
        let m = scan_ops(bytes);
        let line: Vec<String> = m.iter().map(|(k, v)| format!("{k}: {}", v.len())).collect();
        writeln!(sum, "{n}: {}", line.join(", ")).unwrap();
        for (k, v) in &m {
            for at in v {
                let end = (*at + 16).min(bytes.len());
                writeln!(local, "{n} {k} at {at:#x}: {:02x?}", &bytes[*at..end]).unwrap();
                match in_named_buffer(bytes, *at) {
                    Some((name, len)) => {
                        writeln!(sum, "  the {k} pair lies inside Name ({}, Buffer) of {len} bytes: data", String::from_utf8_lossy(&name)).unwrap()
                    }
                    None => writeln!(sum, "  the {k} pair lies in no named Buffer: a candidate site").unwrap(),
                }
            }
        }
    }

    // --- Linux's dynamic blocks.
    writeln!(sum, "\n## Linux's run-time blocks (dynamic/)").unwrap();
    let mut dyns: Vec<(u32, String)> = fs::read_dir(dir.join("dynamic"))
        .unwrap()
        .map(|e| e.unwrap().file_name().into_string().unwrap())
        .map(|n| (n.trim_start_matches(|c: char| c.is_ascii_alphabetic()).parse().unwrap_or(0), n))
        .collect();
    dyns.sort();
    writeln!(sum, "blocks: {}", dyns.len()).unwrap();
    for (_, n) in &dyns {
        let bytes = fs::read(dir.join("dynamic").join(n)).unwrap();
        let len = u32::from_le_bytes(bytes[4..8].try_into().unwrap()) as usize;
        let sum0 = bytes.iter().fold(0u8, |s, x| s.wrapping_add(*x));
        let tid = String::from_utf8_lossy(&bytes[16..24]).trim_end_matches(['\0', ' ']).to_string();
        let mut hits = Vec::new();
        for d in &b.nvs {
            for off in find_all(&d.bytes, &bytes) {
                hits.push(d.base + off as u64);
            }
        }
        let classes: Vec<&str> = hits.iter().map(|a| mem_class(&b.map, *a, bytes.len() as u64)).collect();
        let ops = scan_ops(&bytes);
        let ops_line: Vec<String> = ops.iter().map(|(k, v)| format!("{k}: {}", v.len())).collect();
        writeln!(
            sum,
            "{} ({tid}): length {} (header {}), checksum {}, copies found in the NVS dump: {} {:?}; {}",
            &bytes[..4].iter().map(|c| *c as char).collect::<String>(),
            bytes.len(),
            len,
            if sum0 == 0 { "sums to zero" } else { "does NOT sum to zero" },
            hits.len(),
            classes,
            ops_line.join(", ")
        )
        .unwrap();
        for a in &hits {
            writeln!(local, "dynamic {n} ({tid}) found at {a:#x}").unwrap();
        }
    }

    // --- Whether the NVS names the blocks at all: their lengths as DWORDs, their strings.
    if !dyns.is_empty() {
        let lens: BTreeSet<u32> = dyns.iter().map(|(_, n)| fs::read(dir.join("dynamic").join(n)).unwrap().len() as u32).collect();
        let mut length_dwords = 0usize;
        let mut strings: BTreeMap<String, usize> = BTreeMap::new();
        for d in &b.nvs {
            for off in 0..d.bytes.len().saturating_sub(3) {
                if lens.contains(&u32::from_le_bytes(d.bytes[off..off + 4].try_into().unwrap())) {
                    length_dwords += 1;
                }
            }
            for (_, n) in &dyns {
                let bytes = fs::read(dir.join("dynamic").join(n)).unwrap();
                for s in [&bytes[10..16], &bytes[16..24]] {
                    let s: Vec<u8> = s.iter().copied().take_while(|c| *c != 0).collect::<Vec<_>>();
                    let s = String::from_utf8_lossy(&s).trim_end().to_string();
                    let c = find_all(&d.bytes, s.as_bytes()).len();
                    strings.insert(s, c);
                }
            }
            strings.insert("SSDT".into(), find_all(&d.bytes, b"SSDT").len());
        }
        writeln!(sum, "DWORDs in the NVS dump equal to a block's length, at any byte offset: {length_dwords}").unwrap();
        writeln!(sum, "occurrences in the NVS dump of each block's OEM ID, OEM table ID, and \"SSDT\": {strings:?}").unwrap();
    }

    // --- The DSDT, then Linux's run-time blocks in its order, as `Load` would put them.
    if !dyns.is_empty() {
        writeln!(sum, "\n## the DSDT, then Linux's run-time blocks loaded onto it in Linux's order (no static SSDT)").unwrap();
        let mut hh = b.host(Mode::Zero);
        let (mut ii, _) = b.load(&mut hh);
        for (_, n) in &dyns {
            let bytes = fs::read(dir.join("dynamic").join(n)).unwrap();
            let tid = String::from_utf8_lossy(&bytes[16..24]).trim_end_matches(['\0', ' ']).to_string();
            let r = match toyos_acpi::Table::open(bytes.as_slice(), 0, b"SSDT", 36) {
                Ok(t) => ii.load(&mut hh, &t),
                Err(e) => Err(Error::Table(Box::leak(format!("{e:?}").into_boxed_str()))),
            };
            writeln!(sum, "{tid}: {}", match r { Ok(()) => "loaded".to_string(), Err(e) => format!("refused: {}", kind(&e)) }).unwrap();
        }
        let ps: BTreeSet<String> = walk(&ii).into_iter().map(|(p, _, _)| p).collect();
        for m in ["_OSC", "_PDC", "_CST", "_LPI", "_CPC", "_PSS", "_PCT", "_PSD"] {
            let n = processors.iter().filter(|p| ps.contains(&format!("{p}.{m}"))).count();
            writeln!(sum, "processors then defining {m}: {n} of {}", processors.len()).unwrap();
        }
    }

    // --- \_SB._OSC and each processor's _OSC.
    let mut targets: Vec<(String, &str, std::ops::RangeInclusive<u32>)> = Vec::new();
    if paths.contains("\\_SB_._OSC") {
        targets.push(("\\_SB_._OSC".into(), PLATFORM, 0..=22));
    }
    for p in &processors {
        if paths.contains(&format!("{p}._OSC")) {
            targets.push((format!("{p}._OSC"), INTEL, 0..=13));
        }
    }
    writeln!(sum, "\n## _OSC runs").unwrap();
    writeln!(sum, "targets: {}", targets.len()).unwrap();
    for (target, u, bits) in &targets {
        let label = if *u == PLATFORM { "\\_SB._OSC (platform UUID)".to_string() } else { "a processor's _OSC (Intel UUID)".to_string() };
        writeln!(sum, "\n### {label}").unwrap();
        let mut capsets: Vec<(String, u32)> = vec![("0".into(), 0)];
        for bit in bits.clone() {
            if *u == INTEL && bit == 10 {
                continue;
            }
            capsets.push((format!("bit {bit}"), 1 << bit));
        }
        let mut all_k1 = 0usize;
        let mut differs = 0usize;
        let mut nvs_written: BTreeMap<(u64, u8), BTreeMap<u32, u64>> = BTreeMap::new();
        for mode in [Mode::Deny, Mode::Zero] {
            for (name, caps) in &capsets {
                for query in [true, false] {
                    let a = args(u, &[if query { 1 } else { 0 }, *caps]);
                    let plain = run(&b, mode, &[], target, &a);
                    let with = run(&b, mode, &inis, target, &a);
                    let k1 = k1_writes(&plain.recs).len() + k1_writes(&with.recs).len();
                    all_k1 += k1;
                    let same = plain.recs == with.recs && format!("{:?}", plain.result) == format!("{:?}", with.result);
                    if !same {
                        differs += 1;
                    }
                    let q = if query { "query" } else { "commit" };
                    writeln!(
                        sum,
                        "[{mode:?}] caps {name}, {q}: {} | with _INIs first: {} | accesses {} / {} | K1-class writes {k1} | same with and without _INIs: {same} | notifies {} | slept {} ms, stalled {} us",
                        decode(&plain.result),
                        decode(&with.result),
                        plain.recs.len(),
                        with.recs.len(),
                        plain.notifies.len(),
                        plain.slept_ms,
                        plain.stalled_us
                    )
                    .unwrap();
                    for (k, v) in tally(&plain.recs) {
                        writeln!(sum, "    access: {k} x{v}").unwrap();
                    }
                    if !same {
                        for (k, v) in tally(&with.recs) {
                            writeln!(sum, "    access with _INIs first: {k} x{v}").unwrap();
                        }
                    }
                    for r in &plain.recs {
                        writeln!(local, "[{mode:?}] {target} caps {name} {q} plain {r:?}").unwrap();
                        if r.write && r.space == "SystemMemory" && r.class == "NVS" && !query && mode == Mode::Deny {
                            nvs_written.entry((r.at, r.width)).or_default().insert(*caps, r.value);
                        }
                    }
                    for r in &with.recs {
                        writeln!(local, "[{mode:?}] {target} caps {name} {q} with-inis {r:?}").unwrap();
                    }
                    for (p, res) in &with.inis {
                        writeln!(local, "[{mode:?}] ini {p}: {res}").unwrap();
                    }
                }
            }
        }
        writeln!(sum, "runs whose trace or result differ with _INIs first: {differs}; K1-class writes over all runs: {all_k1}").unwrap();
        // Where the commit records its capabilities, and what Linux's run left there.
        for ((at, w), by_caps) in &nvs_written {
            let tracks = by_caps.iter().all(|(c, v)| (*v as u32) & *c == *c);
            let mut linux = 0u64;
            for d in &b.nvs {
                if let Some(off) = at.checked_sub(d.base) {
                    if off + (*w as u64) <= d.bytes.len() as u64 {
                        for k in 0..*w as usize {
                            linux |= (d.bytes[off as usize + k] as u64) << (8 * k);
                        }
                    }
                }
            }
            let distinct: BTreeSet<u64> = by_caps.values().copied().collect();
            writeln!(
                sum,
                "commit writes an NVS field of {w} byte(s): {} distinct value(s) over the cap sets, each holding the caps passed: {tracks}; the dump (Linux's run) holds {linux:#x} there",
                distinct.len()
            )
            .unwrap();
            writeln!(local, "nvs field {at:#x} w{w}: by caps {by_caps:x?}; dump {linux:#x}").unwrap();
            // The same commits on a dump whose field reads 0: what the firmware itself sets there.
            let mut zeroed = Bench { dir: b.dir.clone(), map: b.map.clone(), ports: b.ports.clone(), nvs: b.nvs.clone(), tables: b.tables.clone() };
            for d in &mut zeroed.nvs {
                if let Some(off) = at.checked_sub(d.base) {
                    if off + (*w as u64) <= d.bytes.len() as u64 {
                        for k in 0..*w as usize {
                            d.bytes[off as usize + k] = 0;
                        }
                    }
                }
            }
            for caps in by_caps.keys() {
                let a = args(u, &[0, *caps]);
                let r = run(&zeroed, Mode::Deny, &[], target, &a);
                let set: Vec<u64> = r.recs.iter().filter(|x| x.write && x.at == *at).map(|x| x.value).collect();
                writeln!(sum, "with that field read as 0, the commit of caps {caps:#x} writes {set:#x?} there; the dump's value ANDed with it: {:#x?}", set.iter().map(|v| v & linux).collect::<Vec<_>>()).unwrap();
            }
        }
        if *u == INTEL {
            break; // one processor stands for the rest here; every processor's _OSC is listed in local.txt
        }
    }
    let _ = &b.dir;
    fs::write(out.join("local.txt"), local).unwrap();
    fs::write(out.join("summary.txt"), sum).unwrap();
}

fn i_eval_hid(i: &mut Interpreter, h: &mut Tracer, p: &str) -> Result<Value, Error> {
    i.evaluate(h, &format!("{p}._HID"), &[])
}

@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

M1's result: K1–K5 against the dumps as they were taken. The logs are posted whole: part 1, the T14, part 2, the AMD bench and part 3, the harness. They hold counts and decoded values only.

The dumps hold neither bench's static SSDTs

Step 1 of the request runs for t in DSDT SSDT* FACP APIC ECDT MCFG. The shell expanded SSDT* in its own working directory, not in $T, so [ -f "$T/SSDT*" ] failed and no SSDT was copied.

  • tables/ holds each DSDT, and none of the T14's 13 SSDTs or the AMD's 16. headers/ holds all of their headers.
  • The T14's missing first SSDT is OEM table ID CpuSsdt.
  • The corrected step is cp "$T"/SSDT* "$O/tables/".
  • Separately, the AMD's /dev/mem refused both NVS ranges (Operation not permitted), so no AMD NVS read has a recorded value.

M1 therefore ran on each DSDT, and on the T14 also with Linux's 8 run-time blocks loaded onto it. Where a condition needs what the SSDTs hold, it is undecided.

How it ran

  • The interpreter. It is this head's (1547093ea), whose sources are main's 177e72a9e. It ran outside the tree with a tracing host. The build and both runs exited 0.
  • The host. A SystemMemory read inside the dumped NVS is answered from the dump, and the run's own writes update a copy of it. Every other read is unrecorded: the "deny" mode refuses it and the "zero" mode answers 0. Every write is accepted and recorded by space, direction, width and the memory map's type.
  • The load. It answers every unrecorded read with 0 in both modes, because on metal the kernel answers those reads and the dump does not. The T14's load answered 0 to 35 PCI_Config reads, 8 Reserved reads and 6 RAM reads. The AMD's answered 0 to 6 port reads and 4 memory reads.
  • The \_SB._OSC runs. Capabilities 0 and each bit 0–22 of Table 6.13 alone. Each was run as a query and as a commit, with and without the DSDT's _INIs run first (\_SB._INI first, then the rest in walk order), under both modes. That is 192 evaluations on the T14.

K1–K5

K1 (_OSC writes SMI_CMD, configuration space, or memory outside NVS and reserved): does not fire for the T14's \_SB._OSC.

  • None of its 192 evaluations makes such a write. Its only write is one 4-byte NVS write, made when bit 5 is passed.
  • With DWORD 2 = 0, which is what S1 passes, it makes no access at all.
  • Undecided for the T14's processor _OSC and for the AMD's \_SB._OSC. Both are in undumped SSDTs: the AMD's DSDT has no \_SB._OSC, and Linux's log says \_SB_: platform _OSC: OS support mask [006e7eff].

K2 (_OSC depends on an _INI): does not fire for the T14's \_SB._OSC against the DSDT's 38 _INIs.

  • All 96 pairs are identical with and without the _INIs first: every access, its value, and the result.
  • The comparison sees only what these _INIs changed here. Under "deny", 32 of them ran whole, 5 were refused at an unrecorded read and 1 hit the sleep bound. Under "zero", 37 ran whole, on answers of 0.
  • Undecided for the SSDTs' _INIs (the design counts 45 in all), for the processor _OSC, and for the AMD.

K3 (a Load source outside Table 15.6's two types): undecided, but narrowed.

  • Neither DSDT holds a Load, LoadTable, DataTableRegion or Unload. This was read by a byte scan, which misses none. The T14's one LoadTable byte pair lies inside a named Buffer of 2732 bytes.
  • Linux's 8 run-time blocks hold none either. So the T14's Loads are in an undumped static SSDT.
  • None of the 8 blocks lies in the T14's NVS. The 12 MiB dump holds:
    • no copy of any block, byte for byte;
    • no DWORD equal to any block's length;
    • none of PmRef, the 8 OEM table IDs, or SSDT.
  • So the source lies outside NVS. If it is Reserved memory, K3 does not fire; if it is any other type, K3 sends it to the owner. The region's address is in the undumped SSDT.
  • Each block's length matches its header, and its bytes sum to zero.

K4 (a bench's processors define _PDC and no _OSC): undecided by the interpreter on both benches.

  • The T14. Its DSDT's 24 Processor objects define neither method. The 8 run-time blocks all load onto the DSDT. After them, all 24 processors define _CST, _CPC, _PSS, _PCT and _PSD, and still neither _OSC nor _PDC. Linux's log line _OSC evaluated successfully for all CPUs says the T14's processors do define _OSC, which argues against K4 firing there.
  • The AMD. Its DSDT's 16 ACPI0007 devices define neither method, and its SSDTs are unread.

K5 (the AMD's processors have no _OSC and run no Load): undecided by the interpreter. Nothing measured contradicts it:

  • the AMD's DSDT has no load site and no processor _OSC;
  • Linux loaded no block at run time (dynamic/ is empty);
  • Linux's log has no per-CPU _OSC line.

Its 16 SSDTs, which hold \_SB._OSC, are unread.

For the staging, beyond K1–K5

  • The T14's \_SB._OSC leaves Capabilities Masked set in every run but bit 5's. With DWORD 2 = 0, and with every other single bit, it answers DWORD 1 = 0x11 to the query and 0x10 to the commit. §6.2.11's Query Flag rule recommends querying "until _OSC returns the Capabilities Masked bit clear". On this firmware, with S1's capabilities, that loop never ends. S1's single query and commit must not repeat on that bit.
  • What it grants. Passed alone, bits 0, 1, 2, 3, 4, 5 and 7 come back set. Bit 6 and bits 8–22 come back clear.
  • What it records. Only bit 5 makes it write. The commit sets bit 18 of one NVS DWORD, and the query writes the same DWORD. Linux's dump has that bit set. That is the platform half of where the T14's _OSC records what it was passed.
  • On the T14, S3 needs an S2 ruling. The embedded controller's _INI writes SMI_CMD. Under the interpreter's _OSI answers and the NVS as Linux left it, it wrote 10,001 times and ended at the 10 s sleep bound. My reading, not measured, is that it waits for an answer the SMI handler writes, which a dump cannot give. Today the server denies that write by name. S3's exit, every _INI run and none refused, therefore waits on S2's ruling on SMI_CMD. The design says S3 does not wait on S2's rulings, and on this bench that is not so.
  • The _INIs also write outside the map. Under "zero" they write 4-byte SystemMemory outside every range the map lists, twice. Under "deny" they make no such write.
  • The T14's default boot may already show _CST's states. Its states are named C1_ACPI, C2_ACPI and C3_ACPI, described as ACPI FFH MWAIT with hints 0x0, 0x31 and 0x60. Whether that makes step 7 of the second boot redundant is the orchestrator's call.

To finish M1

  • Repeat step 1 on both benches with cp "$T"/SSDT* "$O/tables/". The headers already dumped check the copies.
  • Give the AMD a route to its NVS bytes, or its runs answer them as unrecorded.

The harness reruns unchanged on a full dump.

@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

M1 on complete tables, part 1 of 6: the T14's log, lines 1– 374 of 635. summary.txt as the extended harness (part 6) wrote it from the T14's dump with its third argument bridges, at this PR's head 1547093ea (exit 0). Counts and decoded values only.

## inputs
definition blocks whole in tables/: 14
SSDT headers in headers/: 13; SSDTs whole in tables/: 13
NVS ranges in the map: 1; dumped with bytes: 1
DSDT: 218508 bytes; header's length 218508; checksum sums to zero; first 36 bytes equal headers/DSDT: true
SSDT1: 9565 bytes; header's length 9565; checksum sums to zero; first 36 bytes equal headers/SSDT1: true
SSDT2: 1435 bytes; header's length 1435; checksum sums to zero; first 36 bytes equal headers/SSDT2: true
SSDT3: 14787 bytes; header's length 14787; checksum sums to zero; first 36 bytes equal headers/SSDT3: true
SSDT4: 1550 bytes; header's length 1550; checksum sums to zero; first 36 bytes equal headers/SSDT4: true
SSDT5: 131 bytes; header's length 131; checksum sums to zero; first 36 bytes equal headers/SSDT5: true
SSDT6: 15330 bytes; header's length 15330; checksum sums to zero; first 36 bytes equal headers/SSDT6: true
SSDT7: 8473 bytes; header's length 8473; checksum sums to zero; first 36 bytes equal headers/SSDT7: true
SSDT8: 6207 bytes; header's length 6207; checksum sums to zero; first 36 bytes equal headers/SSDT8: true
SSDT9: 13683 bytes; header's length 13683; checksum sums to zero; first 36 bytes equal headers/SSDT9: true
SSDT10: 46753 bytes; header's length 46753; checksum sums to zero; first 36 bytes equal headers/SSDT10: true
SSDT11: 298 bytes; header's length 298; checksum sums to zero; first 36 bytes equal headers/SSDT11: true
SSDT12: 2972 bytes; header's length 2972; checksum sums to zero; first 36 bytes equal headers/SSDT12: true
SSDT13: 324 bytes; header's length 324; checksum sums to zero; first 36 bytes equal headers/SSDT13: true
an NVS dump of 12582912 bytes, wholly in a range the map types NVS

## load (unrecorded reads answered 0)
DSDT: loaded
SSDT1: loaded
SSDT2: loaded
SSDT3: loaded
SSDT4: loaded
SSDT5: loaded
SSDT6: loaded
SSDT7: loaded
SSDT8: loaded
SSDT9: loaded
SSDT10: loaded
SSDT11: loaded
SSDT12: loaded
SSDT13: loaded
  load access: PCI_Config read 1B configuration space [as a bridge] x2
  load access: PCI_Config read 1B configuration space [zero] x1
  load access: PCI_Config read 4B configuration space [zero] x49
  load access: SystemMemory read 1B NVS [dump] x310
  load access: SystemMemory read 1B RAM [zero] x8
  load access: SystemMemory read 1B Reserved [zero] x4
  load access: SystemMemory read 2B NVS [dump] x7
  load access: SystemMemory read 2B Reserved [zero] x4
  load access: SystemMemory read 4B NVS [dump] x11
  load access: SystemMemory read 4B RAM [zero] x7
  load access: SystemMemory read 8B NVS [dump] x36

## namespace
objects: 6986
Processor objects: 24; ACPI0007 devices: 0
processors defining _OSC: 24
processors defining _PDC: 24
processors defining _CST: 0
processors defining _LPI: 0
processors defining _CPC: 0
_OSC objects anywhere: 27; \_SB_._OSC: true
_PDC objects anywhere: 24
_INI methods: 45; \_SB_._INI: false
[Deny] one _INI (the embedded controller device's) writes SMI_CMD 10001 times and ends Bound(more time asleep than one evaluation may spend)
[Deny] the _INIs in walk order: {"Bound(more time asleep than one evaluation may spend)": 1, "Host(unrecorded)": 5, "ran": 39}
    _INI access: EmbeddedControl read 1B EC space [denied] x1
    _INI access: PCI_Config read 4B configuration space [denied] x1
    _INI access: SystemIO write 1B SMI_CMD [accepted] x10001
    _INI access: SystemMemory read 1B NVS [dump] x170
    _INI access: SystemMemory read 2B NVS [dump] x75
    _INI access: SystemMemory read 4B NVS [dump] x27
    _INI access: SystemMemory read 4B RAM [denied] x1
    _INI access: SystemMemory read 4B unlisted [denied] x2
    _INI access: SystemMemory read 8B NVS [dump] x10032
    _INI access: SystemMemory write 1B NVS [accepted] x10
    _INI access: SystemMemory write 2B NVS [accepted] x9
    _INI access: SystemMemory write 8B NVS [accepted] x4
[Zero] one _INI (the embedded controller device's) writes SMI_CMD 10001 times and ends Bound(more time asleep than one evaluation may spend)
[Zero] the _INIs in walk order: {"Bound(more time asleep than one evaluation may spend)": 1, "ran": 44}
    _INI access: EmbeddedControl read 1B EC space [zero] x1
    _INI access: PCI_Config read 4B configuration space [zero] x1
    _INI access: SystemIO write 1B SMI_CMD [accepted] x10001
    _INI access: SystemMemory read 1B NVS [dump] x173
    _INI access: SystemMemory read 1B unlisted [zero] x1
    _INI access: SystemMemory read 2B NVS [dump] x80
    _INI access: SystemMemory read 4B NVS [dump] x45
    _INI access: SystemMemory read 4B RAM [zero] x2
    _INI access: SystemMemory read 4B unlisted [zero] x3
    _INI access: SystemMemory read 8B NVS [dump] x10035
    _INI access: SystemMemory write 1B NVS [accepted] x11
    _INI access: SystemMemory write 2B NVS [accepted] x9
    _INI access: SystemMemory write 4B unlisted [accepted] x2
    _INI access: SystemMemory write 8B NVS [accepted] x4

## load sites (raw byte scan of each block after its header)
DSDT: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 1, Unload 5B2A: 0
  the LoadTable 5B1F pair lies inside Name (WQBA, Buffer) of 2732 bytes: data
SSDT1: DataTableRegion 5B88: 0, Load 5B20: 8, LoadTable 5B1F: 0, Unload 5B2A: 0
  the Load 5B20 pair lies in no named Buffer: a candidate site
  the Load 5B20 pair lies in no named Buffer: a candidate site
  the Load 5B20 pair lies in no named Buffer: a candidate site
  the Load 5B20 pair lies in no named Buffer: a candidate site
  the Load 5B20 pair lies in no named Buffer: a candidate site
  the Load 5B20 pair lies in no named Buffer: a candidate site
  the Load 5B20 pair lies in no named Buffer: a candidate site
  the Load 5B20 pair lies in no named Buffer: a candidate site
SSDT2: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT3: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT4: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT5: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT6: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT7: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT8: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT9: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT10: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT11: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT12: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT13: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0

## Linux's run-time blocks (dynamic/)
blocks: 8
SSDT (Cpu0Cst): length 916 (header 916), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (Cpu0Ist): length 1599 (header 1599), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (Cpu0Psd): length 459 (header 459), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (Cpu0Hwp): length 651 (header 651), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (ApIst): length 2279 (header 2279), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (ApHwp): length 1162 (header 1162), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (ApPsd): length 1236 (header 1236), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (ApCst): length 1162 (header 1162), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
DWORDs in the NVS dump equal to a block's length, at any byte offset: 0
occurrences in the NVS dump of each block's OEM ID, OEM table ID, and "SSDT": {"ApCst": 0, "ApHwp": 0, "ApIst": 0, "ApPsd": 0, "Cpu0Cst": 0, "Cpu0Hwp": 0, "Cpu0Ist": 0, "Cpu0Psd": 0, "PmRef": 0, "SSDT": 0}

## every table in tables/, then Linux's run-time blocks loaded onto them in Linux's order
Cpu0Cst: loaded
Cpu0Ist: loaded
Cpu0Psd: loaded
Cpu0Hwp: loaded
ApIst: loaded
ApHwp: loaded
ApPsd: loaded
ApCst: loaded
accesses while the run-time blocks loaded: 0
processors then defining _OSC: 24 of 24
processors then defining _PDC: 24 of 24
processors then defining _CST: 24 of 24
processors then defining _LPI: 0 of 24
processors then defining _CPC: 24 of 24
processors then defining _PSS: 24 of 24
processors then defining _PCT: 24 of 24
processors then defining _PSD: 24 of 24

## _OSC runs
targets: 25

### \_SB._OSC (platform UUID)
[Deny] caps 0, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps 0, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 0, query: Buffer(8): DWORD1=0x11 DWORD2=0x1 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x1 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 0, commit: Buffer(8): DWORD1=0x10 DWORD2=0x1 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x1 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 1, query: Buffer(8): DWORD1=0x11 DWORD2=0x2 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x2 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 1, commit: Buffer(8): DWORD1=0x10 DWORD2=0x2 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x2 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 2, query: Buffer(8): DWORD1=0x11 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x4 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 1B NVS [dump] x2
[Deny] caps bit 2, commit: Buffer(8): DWORD1=0x10 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x4 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 1B NVS [dump] x2
[Deny] caps bit 3, query: Buffer(8): DWORD1=0x11 DWORD2=0x8 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x8 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 3, commit: Buffer(8): DWORD1=0x10 DWORD2=0x8 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x8 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 4, query: Buffer(8): DWORD1=0x11 DWORD2=0x10 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x10 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 4, commit: Buffer(8): DWORD1=0x10 DWORD2=0x10 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x10 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 5, query: Buffer(8): DWORD1=0x1 DWORD2=0x20 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x20 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 4B NVS [dump] x1
    access: SystemMemory write 4B NVS [accepted] x1
[Deny] caps bit 5, commit: Buffer(8): DWORD1=0x0 DWORD2=0x20 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x20 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 4B NVS [dump] x1
    access: SystemMemory write 4B NVS [accepted] x1
[Deny] caps bit 6, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 6, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 7, query: Buffer(8): DWORD1=0x11 DWORD2=0x80 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x80 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 7, commit: Buffer(8): DWORD1=0x10 DWORD2=0x80 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x80 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 8, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 8, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 9, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 9, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 10, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 10, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 11, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 11, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 12, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 12, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 13, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 13, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 14, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 14, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 15, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 15, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 16, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 16, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 17, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 17, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 18, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 18, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 19, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 19, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 20, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 20, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 21, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 21, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 22, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 22, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps 0, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps 0, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 0, query: Buffer(8): DWORD1=0x11 DWORD2=0x1 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x1 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 0, commit: Buffer(8): DWORD1=0x10 DWORD2=0x1 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x1 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 1, query: Buffer(8): DWORD1=0x11 DWORD2=0x2 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x2 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 1, commit: Buffer(8): DWORD1=0x10 DWORD2=0x2 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x2 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 2, query: Buffer(8): DWORD1=0x11 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x4 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 1B NVS [dump] x2
[Zero] caps bit 2, commit: Buffer(8): DWORD1=0x10 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x4 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 1B NVS [dump] x2
[Zero] caps bit 3, query: Buffer(8): DWORD1=0x11 DWORD2=0x8 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x8 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 3, commit: Buffer(8): DWORD1=0x10 DWORD2=0x8 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x8 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 4, query: Buffer(8): DWORD1=0x11 DWORD2=0x10 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x10 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 4, commit: Buffer(8): DWORD1=0x10 DWORD2=0x10 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x10 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 5, query: Buffer(8): DWORD1=0x1 DWORD2=0x20 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x20 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 4B NVS [dump] x1
    access: SystemMemory write 4B NVS [accepted] x1
[Zero] caps bit 5, commit: Buffer(8): DWORD1=0x0 DWORD2=0x20 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x20 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 4B NVS [dump] x1
    access: SystemMemory write 4B NVS [accepted] x1
[Zero] caps bit 6, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 6, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 7, query: Buffer(8): DWORD1=0x11 DWORD2=0x80 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x80 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 7, commit: Buffer(8): DWORD1=0x10 DWORD2=0x80 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x80 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 8, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 8, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 9, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 9, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 10, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 10, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 11, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 11, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 12, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 12, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 13, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 13, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 14, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 14, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 15, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 15, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 16, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 16, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 17, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 17, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 18, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 18, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 19, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 19, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 20, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 20, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 21, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 21, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 22, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 22, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
runs whose trace or result differ with _INIs first: 0; K1-class writes over all runs: 0
commit writes an NVS field of 4 byte(s): 1 distinct value(s) over the cap sets, each holding the caps passed: false; the dump (Linux's run) holds 0x11040400 there
with that field read as 0, the commit of caps 0x20 writes [
    0x40000,
] there; the dump's value ANDed with it: [
    0x40000,
]

### a processor's _OSC (Intel UUID)
[Deny] caps 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps 0, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x1 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x1 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 0, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 1, query: Buffer(8): DWORD1=0x1 DWORD2=0x2 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x2 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 1, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 2, query: Buffer(8): DWORD1=0x1 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x4 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 2, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 3, query: Buffer(8): DWORD1=0x1 DWORD2=0x8 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x8 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 3, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x2
[Deny] caps bit 4, query: Buffer(8): DWORD1=0x1 DWORD2=0x10 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x10 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 4, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x2
[Deny] caps bit 5, query: Buffer(8): DWORD1=0x1 DWORD2=0x20 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x20 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 5, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 6, query: Buffer(8): DWORD1=0x1 DWORD2=0x40 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x40 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 6, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 7, query: Buffer(8): DWORD1=0x1 DWORD2=0x80 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x80 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 7, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 8, query: Buffer(8): DWORD1=0x1 DWORD2=0x100 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x100 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 8, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 9, query: Buffer(8): DWORD1=0x1 DWORD2=0x200 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x200 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 9, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 11, query: Buffer(8): DWORD1=0x1 DWORD2=0x800 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x800 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 11, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 12, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 12, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 13, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 13, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps 0, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x1 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x1 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 0, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 1, query: Buffer(8): DWORD1=0x1 DWORD2=0x2 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x2 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 1, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 2, query: Buffer(8): DWORD1=0x1 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x4 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 2, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 3, query: Buffer(8): DWORD1=0x1 DWORD2=0x8 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x8 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 3, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x2
[Zero] caps bit 4, query: Buffer(8): DWORD1=0x1 DWORD2=0x10 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x10 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 4, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x2
[Zero] caps bit 5, query: Buffer(8): DWORD1=0x1 DWORD2=0x20 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x20 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 5, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 6, query: Buffer(8): DWORD1=0x1 DWORD2=0x40 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x40 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 6, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 7, query: Buffer(8): DWORD1=0x1 DWORD2=0x80 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x80 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 7, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 8, query: Buffer(8): DWORD1=0x1 DWORD2=0x100 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x100 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 8, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 9, query: Buffer(8): DWORD1=0x1 DWORD2=0x200 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x200 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 9, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 11, query: Buffer(8): DWORD1=0x1 DWORD2=0x800 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x800 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 11, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 12, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 12, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 13, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 13, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
runs whose trace or result differ with _INIs first: 0; K1-class writes over all runs: 0

## M1b: each Load site's source (K3)
Load sites outside named Buffers, over every table: 8
SSDT1: Load (CST0, HC0_): region space 0x0, offset DerefOf (SSDT [7]), length DerefOf (SSDT [8]); names CPU0CST of 916 bytes, wholly in a range the map types Reserved; Linux's run-time block of that OEM table ID: 916 bytes, equal to the region's length: true
SSDT1: Load (IST0, HI0_): region space 0x0, offset DerefOf (SSDT [1]), length DerefOf (SSDT [2]); names CPU0IST of 1599 bytes, wholly in a range the map types Reserved; Linux's run-time block of that OEM table ID: 1599 bytes, equal to the region's length: true
SSDT1: Load (PSD0, HP0_): region space 0x0, offset DerefOf (SSDT [22]), length DerefOf (SSDT [23]); names CPU0PSD of 459 bytes, wholly in a range the map types Reserved; Linux's run-time block of that OEM table ID: 459 bytes, equal to the region's length: true
SSDT1: Load (HWP0, HW0_): region space 0x0, offset DerefOf (SSDT [13]), length DerefOf (SSDT [14]); names CPU0HWP of 651 bytes, wholly in a range the map types Reserved; Linux's run-time block of that OEM table ID: 651 bytes, equal to the region's length: true
SSDT1: Load (CST1, HC1_): region space 0x0, offset DerefOf (SSDT [10]), length DerefOf (SSDT [11]); names APCST of 1162 bytes, wholly in a range the map types Reserved; Linux's run-time block of that OEM table ID: 1162 bytes, equal to the region's length: true
SSDT1: Load (IST1, HI1_): region space 0x0, offset DerefOf (SSDT [4]), length DerefOf (SSDT [5]); names APIST of 2279 bytes, wholly in a range the map types Reserved; Linux's run-time block of that OEM table ID: 2279 bytes, equal to the region's length: true
SSDT1: Load (PSD1, HP1_): region space 0x0, offset DerefOf (SSDT [25]), length DerefOf (SSDT [26]); names APPSD of 1236 bytes, wholly in a range the map types Reserved; Linux's run-time block of that OEM table ID: 1236 bytes, equal to the region's length: true
SSDT1: Load (HWP1, HW1_): region space 0x0, offset DerefOf (SSDT [16]), length DerefOf (SSDT [17]); names APHWP of 1162 bytes, wholly in a range the map types Reserved; Linux's run-time block of that OEM table ID: 1162 bytes, equal to the region's length: true
\SSDT: entry HWPLVT of 0x80000000 bytes is named by no Load site; its address lies in a range the map types straddles-ranges
Dst objects the rewritten tables set: 8
  \_SB_.PR00.HC0_ <- CPU0CST
  \_SB_.PR00.HI0_ <- CPU0IST
  \_SB_.PR00.HP0_ <- CPU0PSD
  \_SB_.PR00.HW0_ <- CPU0HWP
  \_SB_.PR01.HC1_ <- APCST
  \_SB_.PR01.HI1_ <- APIST
  \_SB_.PR01.HP1_ <- APPSD
  \_SB_.PR01.HW1_ <- APHWP

@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

M1 on complete tables, part 2 of 6: the T14's log, lines 375– 635 of 635. The rest of part 1's summary.txt.

## M1b: \_SB._OSC, then each processor's _OSC in walk order (24), query then commit with what the query granted, in one namespace, every Load rewritten
the rewritten tables load with refusals: []
[Deny] S1: platform 0, processors 0 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] processors bit 0 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x1": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 24} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] processors bit 1 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x2": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x2": 10} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] processors bit 2 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x4": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x4": 10} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] processors bit 3 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x8": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x8": 10} | Loads reached: ["CPU0CST (by the first processor)", "CPU0PSD (by the first processor)", "APCST (by a later processor)"] | blocks then loaded: ["CPU0CST: loaded", "CPU0PSD: loaded", "APCST: loaded"] (0 accesses) | accesses 15 / 15 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x14
[Deny] processors bit 4 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x10": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x10": 10} | Loads reached: ["CPU0CST (by the first processor)", "CPU0PSD (by the first processor)", "APCST (by a later processor)"] | blocks then loaded: ["CPU0CST: loaded", "CPU0PSD: loaded", "APCST: loaded"] (0 accesses) | accesses 15 / 15 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x14
[Deny] processors bit 5 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x20": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x20": 10} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] processors bit 6 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x40": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x40": 10} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] processors bit 7 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x80": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x80": 10} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] processors bit 8 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x100": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x100": 10} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] processors bit 9 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x200": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x200": 10} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] processors bit 11 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x800": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x800": 10} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] processors bit 12 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] processors bit 13 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 0 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x1; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x1 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)", "APHWP (by a later processor)"] | blocks then loaded: ["CPU0PSD: loaded", "APHWP: loaded"] (0 accesses) | accesses 8 / 8 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x2
    access: SystemMemory read 8B NVS [dump] x6
[Deny] platform bit 1 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x2; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x2 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 2 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x4; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x4 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 10 / 10 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 1B NVS [dump] x4
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 3 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x8; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x8 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 4 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x10; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x10 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 5 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x20; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x20 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)", "APPSD (by a later processor)", "APHWP (by a later processor)"] | blocks then loaded: ["CPU0PSD: loaded", "APPSD: loaded", "APHWP: loaded"] (0 accesses) | accesses 103 / 103 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x24
    access: SystemMemory read 4B NVS [dump] x2
    access: SystemMemory read 8B NVS [dump] x74
    access: SystemMemory write 1B NVS [accepted] x1
    access: SystemMemory write 4B NVS [accepted] x2
[Deny] platform bit 6 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 7 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x80; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x80 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 8 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 9 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 10 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 11 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 12 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 13 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 14 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 15 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 16 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 17 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 18 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 19 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 20 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 21 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] platform bit 22 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Deny] every bit: platform 0x7FFFFF, processors 0x3BFF | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x7fffff; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x7fffff | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x1": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0xbff": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0xbff": 10} | Loads reached: ["CPU0CST (by the first processor)", "CPU0IST (by the first processor)", "CPU0PSD (by the first processor)", "CPU0HWP (by the first processor)", "APCST (by a later processor)", "APIST (by a later processor)", "APPSD (by a later processor)", "APHWP (by a later processor)"] | blocks then loaded: ["CPU0CST: loaded", "CPU0IST: loaded", "CPU0PSD: loaded", "CPU0HWP: loaded", "APCST: loaded", "APIST: loaded", "APPSD: loaded", "APHWP: loaded"] (0 accesses) | accesses 126 / 126 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 1B NVS [dump] x4
    access: SystemMemory read 2B NVS [dump] x24
    access: SystemMemory read 4B NVS [dump] x2
    access: SystemMemory read 8B NVS [dump] x93
    access: SystemMemory write 1B NVS [accepted] x1
    access: SystemMemory write 4B NVS [accepted] x2
[Zero] S1: platform 0, processors 0 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] processors bit 0 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x1": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 24} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] processors bit 1 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x2": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x2": 10} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] processors bit 2 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x4": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x4": 10} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] processors bit 3 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x8": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x8": 10} | Loads reached: ["CPU0CST (by the first processor)", "CPU0PSD (by the first processor)", "APCST (by a later processor)"] | blocks then loaded: ["CPU0CST: loaded", "CPU0PSD: loaded", "APCST: loaded"] (0 accesses) | accesses 15 / 15 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x14
[Zero] processors bit 4 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x10": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x10": 10} | Loads reached: ["CPU0CST (by the first processor)", "CPU0PSD (by the first processor)", "APCST (by a later processor)"] | blocks then loaded: ["CPU0CST: loaded", "CPU0PSD: loaded", "APCST: loaded"] (0 accesses) | accesses 15 / 15 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x14
[Zero] processors bit 5 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x20": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x20": 10} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] processors bit 6 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x40": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x40": 10} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] processors bit 7 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x80": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x80": 10} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] processors bit 8 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x100": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x100": 10} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] processors bit 9 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x200": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x200": 10} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] processors bit 11 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0x800": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0x800": 10} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] processors bit 12 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] processors bit 13 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 0 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x1; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x1 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)", "APHWP (by a later processor)"] | blocks then loaded: ["CPU0PSD: loaded", "APHWP: loaded"] (0 accesses) | accesses 8 / 8 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x2
    access: SystemMemory read 8B NVS [dump] x6
[Zero] platform bit 1 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x2; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x2 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 2 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x4; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x4 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 10 / 10 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 1B NVS [dump] x4
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 3 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x8; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x8 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 4 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x10; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x10 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 5 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x20; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x20 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)", "APPSD (by a later processor)", "APHWP (by a later processor)"] | blocks then loaded: ["CPU0PSD: loaded", "APPSD: loaded", "APHWP: loaded"] (0 accesses) | accesses 103 / 103 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x24
    access: SystemMemory read 4B NVS [dump] x2
    access: SystemMemory read 8B NVS [dump] x74
    access: SystemMemory write 1B NVS [accepted] x1
    access: SystemMemory write 4B NVS [accepted] x2
[Zero] platform bit 6 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 7 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x80; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x80 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 8 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 9 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 10 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 11 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 12 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 13 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 14 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 15 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 16 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 17 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 18 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 19 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 20 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 21 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] platform bit 22 | platform query: Buffer(8): DWORD1=0x11 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x0": 24, "query Buffer(8): DWORD1=0x1 DWORD2=0x0": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14} | Loads reached: ["CPU0PSD (by the first processor)"] | blocks then loaded: ["CPU0PSD: loaded"] (0 accesses) | accesses 6 / 6 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 2B NVS [dump] x1
    access: SystemMemory read 8B NVS [dump] x5
[Zero] every bit: platform 0x7FFFFF, processors 0x3BFF | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x7fffff; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x7fffff | processors: {"commit Buffer(8): DWORD1=0x0 DWORD2=0x1": 14, "commit Buffer(8): DWORD1=0x0 DWORD2=0xbff": 10, "query Buffer(8): DWORD1=0x1 DWORD2=0x1": 14, "query Buffer(8): DWORD1=0x1 DWORD2=0xbff": 10} | Loads reached: ["CPU0CST (by the first processor)", "CPU0IST (by the first processor)", "CPU0PSD (by the first processor)", "CPU0HWP (by the first processor)", "APCST (by a later processor)", "APIST (by a later processor)", "APPSD (by a later processor)", "APHWP (by a later processor)"] | blocks then loaded: ["CPU0CST: loaded", "CPU0IST: loaded", "CPU0PSD: loaded", "CPU0HWP: loaded", "APCST: loaded", "APIST: loaded", "APPSD: loaded", "APHWP: loaded"] (0 accesses) | accesses 126 / 126 with _INIs first | K1-class writes 0 | same with and without _INIs: true
    access: SystemMemory read 1B NVS [dump] x4
    access: SystemMemory read 2B NVS [dump] x24
    access: SystemMemory read 4B NVS [dump] x2
    access: SystemMemory read 8B NVS [dump] x93
    access: SystemMemory write 1B NVS [accepted] x1
    access: SystemMemory write 4B NVS [accepted] x2
sequences whose steps, Loads, blocks or accesses differ with _INIs first: 0; K1-class writes over all sequences, blocks' loads included: 0

## M1b: what the sequences read that the _INIs write (K2 through memory)
[Deny] \_SB_.PC00.LPCB.EC__._INI writes {"SystemIO 1B SMI_CMD": 10001, "SystemMemory 1B NVS": 9, "SystemMemory 8B NVS": 3} and ends Bound(more time asleep than one evaluation may spend)
[Deny] \_SB_.PC00._INI writes {"SystemMemory 2B NVS": 9} and ends Host(unrecorded)
[Deny] \_SB_.HIDD._INI writes {"SystemMemory 1B NVS": 1, "SystemMemory 8B NVS": 1} and ends having run
[Zero] \_SB_.PC00.LPCB.EC__._INI writes {"SystemIO 1B SMI_CMD": 10001, "SystemMemory 1B NVS": 9, "SystemMemory 8B NVS": 3} and ends Bound(more time asleep than one evaluation may spend)
[Zero] \_SB_.PC00.UA00.BTH0._INI writes {"SystemMemory 4B unlisted": 2} and ends having run
[Zero] \_SB_.PC00._INI writes {"SystemMemory 1B NVS": 1, "SystemMemory 2B NVS": 9} and ends having run
[Zero] \_SB_.HIDD._INI writes {"SystemMemory 1B NVS": 1, "SystemMemory 8B NVS": 1} and ends having run
bytes the _INIs write in SystemMemory, both modes: 44
of them read by a sequence without _INIs: 2, in 1 field(s)
\_SB_.PC00._INI writes 2-byte accesses there; 2 byte(s) of it read; the field(s) reading them: {"\\OSYS"}; the _INI's bytes equal the dump's (Linux's _INIs ran before it): true; read by 38 of the 38 sequence cap sets
  forced to 0x00 [Deny]: sequences whose results, Loads or K1-class writes change: 3 ["platform bit 0 (Loads reached [\"CPU0PSD\", \"APHWP\"] -> [\"CPU0PSD\"]; steps equal: true)", "platform bit 5 (Loads reached [\"CPU0PSD\", \"APPSD\", \"APHWP\"] -> [\"CPU0PSD\", \"APPSD\"]; steps equal: true)", "every bit: platform 0x7FFFFF, processors 0x3BFF (Loads reached [\"CPU0CST\", \"CPU0IST\", \"CPU0PSD\", \"CPU0HWP\", \"APCST\", \"APIST\", \"APPSD\", \"APHWP\"] -> [\"CPU0CST\", \"CPU0IST\", \"CPU0PSD\", \"APCST\", \"APIST\", \"APPSD\"]; steps equal: true)"]
  forced to 0xff [Deny]: sequences whose results, Loads or K1-class writes change: 0 []

@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

M1 on complete tables, part 3 of 6: the AMD bench's log, whole. summary.txt as the extended harness (part 6) wrote it from the AMD bench's dump with its third argument bridges, at this PR's head 1547093ea (exit 0). The AMD's NVS bytes are unread: every NVS read is unrecorded. Counts and decoded values only.

## inputs
definition blocks whole in tables/: 17
SSDT headers in headers/: 16; SSDTs whole in tables/: 16
NVS ranges in the map: 2; dumped with bytes: 0
DSDT: 57225 bytes; header's length 57225; checksum sums to zero; first 36 bytes equal headers/DSDT: true
SSDT1: 29206 bytes; header's length 29206; checksum sums to zero; first 36 bytes equal headers/SSDT1: true
SSDT2: 599 bytes; header's length 599; checksum sums to zero; first 36 bytes equal headers/SSDT2: true
SSDT3: 1133 bytes; header's length 1133; checksum sums to zero; first 36 bytes equal headers/SSDT3: true
SSDT4: 153 bytes; header's length 153; checksum sums to zero; first 36 bytes equal headers/SSDT4: true
SSDT5: 3507 bytes; header's length 3507; checksum sums to zero; first 36 bytes equal headers/SSDT5: true
SSDT6: 248 bytes; header's length 248; checksum sums to zero; first 36 bytes equal headers/SSDT6: true
SSDT7: 14836 bytes; header's length 14836; checksum sums to zero; first 36 bytes equal headers/SSDT7: true
SSDT8: 1484 bytes; header's length 1484; checksum sums to zero; first 36 bytes equal headers/SSDT8: true
SSDT9: 4913 bytes; header's length 4913; checksum sums to zero; first 36 bytes equal headers/SSDT9: true
SSDT10: 5244 bytes; header's length 5244; checksum sums to zero; first 36 bytes equal headers/SSDT10: true
SSDT11: 12986 bytes; header's length 12986; checksum sums to zero; first 36 bytes equal headers/SSDT11: true
SSDT12: 577 bytes; header's length 577; checksum sums to zero; first 36 bytes equal headers/SSDT12: true
SSDT13: 1653 bytes; header's length 1653; checksum sums to zero; first 36 bytes equal headers/SSDT13: true
SSDT14: 1843 bytes; header's length 1843; checksum sums to zero; first 36 bytes equal headers/SSDT14: true
SSDT15: 141 bytes; header's length 141; checksum sums to zero; first 36 bytes equal headers/SSDT15: true
SSDT16: 2205 bytes; header's length 2205; checksum sums to zero; first 36 bytes equal headers/SSDT16: true

## load (unrecorded reads answered 0)
DSDT: loaded
SSDT1: loaded
SSDT2: loaded
SSDT3: loaded
SSDT4: loaded
SSDT5: loaded
SSDT6: loaded
SSDT7: loaded
SSDT8: refused: NotFound
  SSDT8 refused in full: NotFound("\\_SB_.PCI0.LPC0.EC0_")
SSDT9: loaded
SSDT10: loaded
SSDT11: loaded
SSDT12: loaded
SSDT13: loaded
SSDT14: loaded
SSDT15: loaded
SSDT16: loaded
  load access: SystemIO read 1B a port the FADT does not name [zero] x6
  load access: SystemIO write 1B a port the FADT does not name [accepted] x6
  load access: SystemMemory read 1B NVS [zero] x2
  load access: SystemMemory read 1B Reserved [zero] x2
  load access: SystemMemory read 4B NVS [zero] x1
  load access: SystemMemory read 4B RAM [zero] x1

## namespace
objects: 3169
Processor objects: 0; ACPI0007 devices: 16
processors defining _OSC: 0
processors defining _PDC: 0
processors defining _CST: 16
processors defining _LPI: 16
processors defining _CPC: 0
_OSC objects anywhere: 2; \_SB_._OSC: true
_PDC objects anywhere: 0
_INI methods: 13; \_SB_._INI: false
[Deny] the _INIs in walk order: {"Host(unrecorded)": 2, "ran": 11}
    _INI access: SystemMemory read 1B NVS [denied] x1
    _INI access: SystemMemory read 1B RAM [denied] x1
[Zero] the _INIs in walk order: {"ran": 13}
    _INI access: SystemMemory read 1B NVS [zero] x1
    _INI access: SystemMemory read 1B RAM [zero] x1

## load sites (raw byte scan of each block after its header)
DSDT: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT1: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT2: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT3: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT4: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT5: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT6: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT7: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT8: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT9: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT10: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT11: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT12: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT13: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT14: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT15: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT16: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0

## Linux's run-time blocks (dynamic/)
blocks: 0

## _OSC runs
targets: 1

### \_SB._OSC (platform UUID)
[Deny] caps 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps 0, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 0, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 1, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 1, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 2, query: Buffer(8): DWORD1=0x1 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x4 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 2, commit: Buffer(8): DWORD1=0x0 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x4 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 3, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 3, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 4, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 4, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 5, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 5, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 6, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 6, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 7, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 7, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 8, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 8, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 9, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 9, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 10, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 10, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 11, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 11, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 12, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 12, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 13, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 13, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 14, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 14, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 15, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 15, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 16, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 16, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 17, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 17, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 18, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 18, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 19, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 19, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 20, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 20, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 21, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 21, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 22, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 22, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps 0, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 0, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 1, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 1, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 2, query: Buffer(8): DWORD1=0x1 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x4 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 2, commit: Buffer(8): DWORD1=0x0 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x4 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 3, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 3, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 4, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 4, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 5, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 5, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 6, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 6, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 7, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 7, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 8, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 8, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 9, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 9, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 10, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 10, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 11, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 11, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 12, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 12, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 13, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 13, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 14, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 14, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 15, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 15, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 16, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 16, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 17, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 17, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 18, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 18, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 19, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 19, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 20, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 20, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 21, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 21, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 22, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 22, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
runs whose trace or result differ with _INIs first: 0; K1-class writes over all runs: 0

## M1b: each Load site's source (K3)
Load sites outside named Buffers, over every table: 0
Dst objects the rewritten tables set: 0

## M1b: \_SB._OSC, then each processor's _OSC in walk order (0), query then commit with what the query granted, in one namespace, every Load rewritten
the rewritten tables load with refusals: ["SSDT8: NotFound(\"\\\\_SB_.PCI0.LPC0.EC0_\")"]
[Deny] S1: platform 0, processors 0 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 0 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 1 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 2 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x4; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x4 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 3 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 4 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 5 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 6 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 7 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 8 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 9 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 10 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 11 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 12 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 13 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 14 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 15 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 16 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 17 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 18 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 19 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 20 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 21 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] platform bit 22 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Deny] every bit: platform 0x7FFFFF, processors 0x3BFF | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x4; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x4 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] S1: platform 0, processors 0 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 0 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 1 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 2 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x4; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x4 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 3 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 4 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 5 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 6 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 7 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 8 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 9 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 10 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 11 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 12 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 13 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 14 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 15 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 16 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 17 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 18 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 19 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 20 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 21 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] platform bit 22 | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x0; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
[Zero] every bit: platform 0x7FFFFF, processors 0x3BFF | platform query: Buffer(8): DWORD1=0x1 DWORD2=0x4; platform commit: Buffer(8): DWORD1=0x0 DWORD2=0x4 | processors: {} | Loads reached: [] | blocks then loaded: [] (0 accesses) | accesses 0 / 0 with _INIs first | K1-class writes 0 | same with and without _INIs: true
sequences whose steps, Loads, blocks or accesses differ with _INIs first: 0; K1-class writes over all sequences, blocks' loads included: 0

## M1b: what the sequences read that the _INIs write (K2 through memory)
bytes the _INIs write in SystemMemory, both modes: 0
of them read by a sequence without _INIs: 0, in 0 field(s)

@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

M1 on complete tables, part 4 of 6: the unchanged harness's T14 log, whole. summary.txt as the first run's harness (its source), rebuilt unchanged at 1547093ea, wrote it from the T14's complete dump (exit 0). Counts and decoded values only.

## inputs
definition blocks whole in tables/: 14
SSDT headers in headers/: 13; SSDTs whole in tables/: 13
NVS ranges in the map: 1; dumped with bytes: 1
an NVS dump of 12582912 bytes, wholly in a range the map types NVS

## load (unrecorded reads answered 0)
DSDT: loaded
SSDT1: loaded
SSDT2: loaded
SSDT3: loaded
SSDT4: loaded
SSDT5: loaded
SSDT6: loaded
SSDT7: refused: Bridge
SSDT8: loaded
SSDT9: loaded
SSDT10: loaded
SSDT11: loaded
SSDT12: loaded
SSDT13: loaded
  load access: PCI_Config read 1B configuration space [zero] x1
  load access: PCI_Config read 4B configuration space [zero] x49
  load access: SystemMemory read 1B NVS [dump] x309
  load access: SystemMemory read 1B RAM [zero] x8
  load access: SystemMemory read 1B Reserved [zero] x4
  load access: SystemMemory read 2B NVS [dump] x7
  load access: SystemMemory read 2B Reserved [zero] x4
  load access: SystemMemory read 4B NVS [dump] x10
  load access: SystemMemory read 4B RAM [zero] x7
  load access: SystemMemory read 8B NVS [dump] x36

## namespace
objects: 6930
Processor objects: 24; ACPI0007 devices: 0
processors defining _OSC: 24
processors defining _PDC: 24
processors defining _CST: 0
processors defining _LPI: 0
processors defining _CPC: 0
_OSC objects anywhere: 27; \_SB_._OSC: true
_PDC objects anywhere: 24
_INI methods: 45; \_SB_._INI: false
[Deny] one _INI (the embedded controller device's) writes SMI_CMD 10001 times and ends Bound(more time asleep than one evaluation may spend)
[Deny] the _INIs in walk order: {"Bound(more time asleep than one evaluation may spend)": 1, "Host(unrecorded)": 5, "ran": 39}
    _INI access: EmbeddedControl read 1B EC space [denied] x1
    _INI access: PCI_Config read 4B configuration space [denied] x1
    _INI access: SystemIO write 1B SMI_CMD [accepted] x10001
    _INI access: SystemMemory read 1B NVS [dump] x170
    _INI access: SystemMemory read 2B NVS [dump] x75
    _INI access: SystemMemory read 4B NVS [dump] x27
    _INI access: SystemMemory read 4B RAM [denied] x1
    _INI access: SystemMemory read 4B unlisted [denied] x2
    _INI access: SystemMemory read 8B NVS [dump] x10032
    _INI access: SystemMemory write 1B NVS [accepted] x10
    _INI access: SystemMemory write 2B NVS [accepted] x9
    _INI access: SystemMemory write 8B NVS [accepted] x4
[Zero] one _INI (the embedded controller device's) writes SMI_CMD 10001 times and ends Bound(more time asleep than one evaluation may spend)
[Zero] the _INIs in walk order: {"Bound(more time asleep than one evaluation may spend)": 1, "ran": 44}
    _INI access: EmbeddedControl read 1B EC space [zero] x1
    _INI access: PCI_Config read 4B configuration space [zero] x1
    _INI access: SystemIO write 1B SMI_CMD [accepted] x10001
    _INI access: SystemMemory read 1B NVS [dump] x173
    _INI access: SystemMemory read 1B unlisted [zero] x1
    _INI access: SystemMemory read 2B NVS [dump] x80
    _INI access: SystemMemory read 4B NVS [dump] x45
    _INI access: SystemMemory read 4B RAM [zero] x2
    _INI access: SystemMemory read 4B unlisted [zero] x3
    _INI access: SystemMemory read 8B NVS [dump] x10035
    _INI access: SystemMemory write 1B NVS [accepted] x11
    _INI access: SystemMemory write 2B NVS [accepted] x9
    _INI access: SystemMemory write 4B unlisted [accepted] x2
    _INI access: SystemMemory write 8B NVS [accepted] x4

## load sites (raw byte scan of each block after its header)
DSDT: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 1, Unload 5B2A: 0
  the LoadTable 5B1F pair lies inside Name (WQBA, Buffer) of 2732 bytes: data
SSDT1: DataTableRegion 5B88: 0, Load 5B20: 8, LoadTable 5B1F: 0, Unload 5B2A: 0
  the Load 5B20 pair lies in no named Buffer: a candidate site
  the Load 5B20 pair lies in no named Buffer: a candidate site
  the Load 5B20 pair lies in no named Buffer: a candidate site
  the Load 5B20 pair lies in no named Buffer: a candidate site
  the Load 5B20 pair lies in no named Buffer: a candidate site
  the Load 5B20 pair lies in no named Buffer: a candidate site
  the Load 5B20 pair lies in no named Buffer: a candidate site
  the Load 5B20 pair lies in no named Buffer: a candidate site
SSDT2: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT3: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT4: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT5: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT6: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT7: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT8: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT9: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT10: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT11: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT12: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT13: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0

## Linux's run-time blocks (dynamic/)
blocks: 8
SSDT (Cpu0Cst): length 916 (header 916), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (Cpu0Ist): length 1599 (header 1599), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (Cpu0Psd): length 459 (header 459), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (Cpu0Hwp): length 651 (header 651), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (ApIst): length 2279 (header 2279), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (ApHwp): length 1162 (header 1162), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (ApPsd): length 1236 (header 1236), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT (ApCst): length 1162 (header 1162), checksum sums to zero, copies found in the NVS dump: 0 []; DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
DWORDs in the NVS dump equal to a block's length, at any byte offset: 0
occurrences in the NVS dump of each block's OEM ID, OEM table ID, and "SSDT": {"ApCst": 0, "ApHwp": 0, "ApIst": 0, "ApPsd": 0, "Cpu0Cst": 0, "Cpu0Hwp": 0, "Cpu0Ist": 0, "Cpu0Psd": 0, "PmRef": 0, "SSDT": 0}

## the DSDT, then Linux's run-time blocks loaded onto it in Linux's order (no static SSDT)
Cpu0Cst: loaded
Cpu0Ist: loaded
Cpu0Psd: loaded
Cpu0Hwp: loaded
ApIst: loaded
ApHwp: loaded
ApPsd: loaded
ApCst: loaded
processors then defining _OSC: 24 of 24
processors then defining _PDC: 24 of 24
processors then defining _CST: 24 of 24
processors then defining _LPI: 0 of 24
processors then defining _CPC: 24 of 24
processors then defining _PSS: 24 of 24
processors then defining _PCT: 24 of 24
processors then defining _PSD: 24 of 24

## _OSC runs
targets: 25

### \_SB._OSC (platform UUID)
[Deny] caps 0, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps 0, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 0, query: Buffer(8): DWORD1=0x11 DWORD2=0x1 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x1 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 0, commit: Buffer(8): DWORD1=0x10 DWORD2=0x1 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x1 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 1, query: Buffer(8): DWORD1=0x11 DWORD2=0x2 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x2 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 1, commit: Buffer(8): DWORD1=0x10 DWORD2=0x2 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x2 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 2, query: Buffer(8): DWORD1=0x11 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x4 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 1B NVS [dump] x2
[Deny] caps bit 2, commit: Buffer(8): DWORD1=0x10 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x4 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 1B NVS [dump] x2
[Deny] caps bit 3, query: Buffer(8): DWORD1=0x11 DWORD2=0x8 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x8 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 3, commit: Buffer(8): DWORD1=0x10 DWORD2=0x8 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x8 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 4, query: Buffer(8): DWORD1=0x11 DWORD2=0x10 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x10 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 4, commit: Buffer(8): DWORD1=0x10 DWORD2=0x10 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x10 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 5, query: Buffer(8): DWORD1=0x1 DWORD2=0x20 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x20 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 4B NVS [dump] x1
    access: SystemMemory write 4B NVS [accepted] x1
[Deny] caps bit 5, commit: Buffer(8): DWORD1=0x0 DWORD2=0x20 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x20 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 4B NVS [dump] x1
    access: SystemMemory write 4B NVS [accepted] x1
[Deny] caps bit 6, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 6, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 7, query: Buffer(8): DWORD1=0x11 DWORD2=0x80 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x80 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 7, commit: Buffer(8): DWORD1=0x10 DWORD2=0x80 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x80 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 8, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 8, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 9, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 9, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 10, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 10, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 11, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 11, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 12, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 12, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 13, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 13, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 14, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 14, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 15, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 15, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 16, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 16, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 17, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 17, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 18, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 18, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 19, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 19, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 20, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 20, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 21, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 21, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 22, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 22, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps 0, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps 0, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 0, query: Buffer(8): DWORD1=0x11 DWORD2=0x1 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x1 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 0, commit: Buffer(8): DWORD1=0x10 DWORD2=0x1 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x1 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 1, query: Buffer(8): DWORD1=0x11 DWORD2=0x2 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x2 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 1, commit: Buffer(8): DWORD1=0x10 DWORD2=0x2 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x2 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 2, query: Buffer(8): DWORD1=0x11 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x4 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 1B NVS [dump] x2
[Zero] caps bit 2, commit: Buffer(8): DWORD1=0x10 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x4 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 1B NVS [dump] x2
[Zero] caps bit 3, query: Buffer(8): DWORD1=0x11 DWORD2=0x8 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x8 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 3, commit: Buffer(8): DWORD1=0x10 DWORD2=0x8 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x8 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 4, query: Buffer(8): DWORD1=0x11 DWORD2=0x10 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x10 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 4, commit: Buffer(8): DWORD1=0x10 DWORD2=0x10 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x10 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 5, query: Buffer(8): DWORD1=0x1 DWORD2=0x20 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x20 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 4B NVS [dump] x1
    access: SystemMemory write 4B NVS [accepted] x1
[Zero] caps bit 5, commit: Buffer(8): DWORD1=0x0 DWORD2=0x20 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x20 | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 4B NVS [dump] x1
    access: SystemMemory write 4B NVS [accepted] x1
[Zero] caps bit 6, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 6, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 7, query: Buffer(8): DWORD1=0x11 DWORD2=0x80 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x80 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 7, commit: Buffer(8): DWORD1=0x10 DWORD2=0x80 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x80 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 8, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 8, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 9, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 9, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 10, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 10, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 11, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 11, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 12, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 12, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 13, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 13, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 14, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 14, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 15, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 15, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 16, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 16, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 17, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 17, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 18, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 18, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 19, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 19, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 20, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 20, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 21, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 21, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 22, query: Buffer(8): DWORD1=0x11 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x11 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 22, commit: Buffer(8): DWORD1=0x10 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x10 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
runs whose trace or result differ with _INIs first: 0; K1-class writes over all runs: 0
commit writes an NVS field of 4 byte(s): 1 distinct value(s) over the cap sets, each holding the caps passed: false; the dump (Linux's run) holds 0x11040400 there
with that field read as 0, the commit of caps 0x20 writes [
    0x40000,
] there; the dump's value ANDed with it: [
    0x40000,
]

### a processor's _OSC (Intel UUID)
[Deny] caps 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps 0, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x1 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x1 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 0, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 1, query: Buffer(8): DWORD1=0x1 DWORD2=0x2 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x2 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 1, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 2, query: Buffer(8): DWORD1=0x1 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x4 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 2, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 3, query: Buffer(8): DWORD1=0x1 DWORD2=0x8 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x8 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 3, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x2
[Deny] caps bit 4, query: Buffer(8): DWORD1=0x1 DWORD2=0x10 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x10 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 4, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x2
[Deny] caps bit 5, query: Buffer(8): DWORD1=0x1 DWORD2=0x20 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x20 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 5, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 6, query: Buffer(8): DWORD1=0x1 DWORD2=0x40 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x40 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 6, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 7, query: Buffer(8): DWORD1=0x1 DWORD2=0x80 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x80 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 7, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 8, query: Buffer(8): DWORD1=0x1 DWORD2=0x100 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x100 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 8, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 9, query: Buffer(8): DWORD1=0x1 DWORD2=0x200 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x200 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 9, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 11, query: Buffer(8): DWORD1=0x1 DWORD2=0x800 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x800 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 11, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 12, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 12, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Deny] caps bit 13, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 13, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps 0, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x1 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x1 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 0, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 1, query: Buffer(8): DWORD1=0x1 DWORD2=0x2 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x2 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 1, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 2, query: Buffer(8): DWORD1=0x1 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x4 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 2, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 3, query: Buffer(8): DWORD1=0x1 DWORD2=0x8 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x8 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 3, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x2
[Zero] caps bit 4, query: Buffer(8): DWORD1=0x1 DWORD2=0x10 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x10 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 4, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 2 / 2 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x2
[Zero] caps bit 5, query: Buffer(8): DWORD1=0x1 DWORD2=0x20 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x20 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 5, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 6, query: Buffer(8): DWORD1=0x1 DWORD2=0x40 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x40 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 6, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 7, query: Buffer(8): DWORD1=0x1 DWORD2=0x80 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x80 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 7, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 8, query: Buffer(8): DWORD1=0x1 DWORD2=0x100 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x100 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 8, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 9, query: Buffer(8): DWORD1=0x1 DWORD2=0x200 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x200 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 9, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 11, query: Buffer(8): DWORD1=0x1 DWORD2=0x800 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x800 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 11, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 12, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 12, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
[Zero] caps bit 13, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 13, commit: refused: Unsupported(Load) | with _INIs first: refused: Unsupported(Load) | accesses 4 / 4 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
    access: SystemMemory read 8B NVS [dump] x4
runs whose trace or result differ with _INIs first: 0; K1-class writes over all runs: 0

@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

M1 on complete tables, part 5 of 6: the unchanged harness's AMD log, whole. summary.txt as the first run's harness, rebuilt unchanged at 1547093ea, wrote it from the AMD bench's complete dump (exit 0). Counts and decoded values only.

## inputs
definition blocks whole in tables/: 17
SSDT headers in headers/: 16; SSDTs whole in tables/: 16
NVS ranges in the map: 2; dumped with bytes: 0

## load (unrecorded reads answered 0)
DSDT: loaded
SSDT1: loaded
SSDT2: loaded
SSDT3: loaded
SSDT4: loaded
SSDT5: loaded
SSDT6: loaded
SSDT7: loaded
SSDT8: refused: NotFound
SSDT9: loaded
SSDT10: loaded
SSDT11: loaded
SSDT12: loaded
SSDT13: loaded
SSDT14: loaded
SSDT15: loaded
SSDT16: loaded
  load access: SystemIO read 1B a port the FADT does not name [zero] x6
  load access: SystemIO write 1B a port the FADT does not name [accepted] x6
  load access: SystemMemory read 1B NVS [zero] x2
  load access: SystemMemory read 1B Reserved [zero] x2
  load access: SystemMemory read 4B NVS [zero] x1
  load access: SystemMemory read 4B RAM [zero] x1

## namespace
objects: 3169
Processor objects: 0; ACPI0007 devices: 16
processors defining _OSC: 0
processors defining _PDC: 0
processors defining _CST: 16
processors defining _LPI: 16
processors defining _CPC: 0
_OSC objects anywhere: 2; \_SB_._OSC: true
_PDC objects anywhere: 0
_INI methods: 13; \_SB_._INI: false
[Deny] the _INIs in walk order: {"Host(unrecorded)": 2, "ran": 11}
    _INI access: SystemMemory read 1B NVS [denied] x1
    _INI access: SystemMemory read 1B RAM [denied] x1
[Zero] the _INIs in walk order: {"ran": 13}
    _INI access: SystemMemory read 1B NVS [zero] x1
    _INI access: SystemMemory read 1B RAM [zero] x1

## load sites (raw byte scan of each block after its header)
DSDT: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT1: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT2: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT3: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT4: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT5: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT6: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT7: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT8: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT9: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT10: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT11: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT12: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT13: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT14: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT15: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT16: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0

## Linux's run-time blocks (dynamic/)
blocks: 0

## _OSC runs
targets: 1

### \_SB._OSC (platform UUID)
[Deny] caps 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps 0, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 0, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 1, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 1, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 2, query: Buffer(8): DWORD1=0x1 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x4 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 2, commit: Buffer(8): DWORD1=0x0 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x4 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 3, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 3, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 4, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 4, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 5, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 5, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 6, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 6, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 7, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 7, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 8, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 8, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 9, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 9, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 10, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 10, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 11, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 11, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 12, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 12, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 13, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 13, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 14, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 14, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 15, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 15, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 16, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 16, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 17, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 17, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 18, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 18, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 19, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 19, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 20, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 20, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 21, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 21, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 22, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 22, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps 0, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 0, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 1, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 1, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 2, query: Buffer(8): DWORD1=0x1 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x4 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 2, commit: Buffer(8): DWORD1=0x0 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x4 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 3, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 3, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 4, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 4, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 5, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 5, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 6, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 6, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 7, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 7, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 8, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 8, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 9, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 9, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 10, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 10, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 11, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 11, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 12, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 12, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 13, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 13, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 14, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 14, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 15, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 15, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 16, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 16, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 17, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 17, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 18, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 18, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 19, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 19, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 20, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 20, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 21, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 21, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 22, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 22, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
runs whose trace or result differ with _INIs first: 0; K1-class writes over all runs: 0

@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

M1 on complete tables, part 6 of 6: the extended harness and the runs' log. The source is the first run's with the diff below applied; Cargo.toml and Cargo.lock are unchanged. Without its third argument it runs the first run's harness: on both benches its output equals, by cmp, that of the first run's source rebuilt unchanged (parts 4 and 5). Paths to this host are written <scratchpad> and <the PR head>.

The runs' log, whole:

## the unchanged harness, built from the first run's source (m1b/build.log, then each run's log)
   Compiling toyos-abi v0.16.0 (<the PR head>/sdk/abi)
   Compiling toyos-bootmap v0.1.0 (<the PR head>/lib/bootmap)
   Compiling toyos-acpi v0.1.0 (<the PR head>/lib/acpi)
   Compiling toyos-aml v0.1.0 (<the PR head>/system/acpiserver/aml)
   Compiling m1-harness v0.0.0 (<scratchpad>/aml/m1b/harness)
    Finished `release` profile [optimized] target(s) in 23.85s
$ m1-harness dumps/t14 out/t14
EXIT=0
$ m1-harness dumps/amd out/amd
EXIT=0

## M1b (m1b/run.log)
$ cargo build --release (m1b/harness)
   Compiling m1-harness v0.0.0 (<scratchpad>/aml/m1b/harness)
    Finished `release` profile [optimized] target(s) in 6.66s
EXIT=0
$ m1-harness dumps/t14 out-check/t14    # no third argument: the first run's harness
EXIT=0
$ cmp against the unchanged harness's output (m1b/out/t14, built from the first run's source)
EXIT=0
$ m1-harness dumps/t14 outb/t14 bridges
EXIT=0
$ m1-harness dumps/amd out-check/amd    # no third argument: the first run's harness
EXIT=0
$ cmp against the unchanged harness's output (m1b/out/amd, built from the first run's source)
EXIT=0
$ m1-harness dumps/amd outb/amd bridges
EXIT=0

The diff, whole:

--- first-run/src/main.rs
+++ m1b/src/main.rs
@@ -7,6 +7,24 @@
 //! dump (an overlay that the run's own writes update); every other read is
 //! unrecorded and is refused (`deny`) or answered 0 (`zero`). Every write is
 //! accepted and recorded.
+//!
+//! M1b adds, behind the third argument `bridges` (any other value or none
+//! runs the first run's harness unchanged):
+//! - the interpreter's walk to a PCI_Config region below a bridge (Header
+//!   Type at 0x0E, Secondary Bus Number at 0x19, one byte each) is answered
+//!   as a PCI-to-PCI bridge whose secondary bus is one above its own, since
+//!   the dump holds no configuration space; every such answer is counted;
+//! - each table's refusal in full;
+//! - each `Load` site's source region, decoded from the bytes, and the
+//!   address and length it names, typed by the memory map (K3);
+//! - `\_SB._OSC` then each processor's `_OSC`, query then commit, in one
+//!   namespace, on copies of the tables whose every `Load (Src, Dst)` is
+//!   rewritten, same length and checksum, to `Store (Ones, Dst)` and Noops,
+//!   so a run continues past it; a `Dst` set after a commit loads Linux's
+//!   run-time block that the source names, as `Load` would have;
+//! - which bytes an `_OSC` run reads that an `_INI` writes (K2's channel
+//!   through memory, which a dump taken after Linux's `_INI`s hides), and
+//!   whether forcing them to 0x00 or 0xFF changes the run.
 
 use std::collections::{BTreeMap, BTreeSet};
 use std::fmt::Write as _;
@@ -145,6 +163,7 @@
     slept_ms: u64,
     stalled_us: u64,
     t: u64,
+    bridges: bool,
 }
 
 fn bytes_of(w: Access) -> u8 {
@@ -157,8 +176,8 @@
 }
 
 impl Tracer {
-    fn new(map: &[Range], ports: &[(u64, u64, &'static str)], nvs: &[Nvs], mode: Mode) -> Self {
-        Tracer { map: map.to_vec(), ports: ports.to_vec(), overlay: nvs.to_vec(), mode, recs: Vec::new(), notifies: Vec::new(), slept_ms: 0, stalled_us: 0, t: 0 }
+    fn new(map: &[Range], ports: &[(u64, u64, &'static str)], nvs: &[Nvs], mode: Mode, bridges: bool) -> Self {
+        Tracer { map: map.to_vec(), ports: ports.to_vec(), overlay: nvs.to_vec(), mode, recs: Vec::new(), notifies: Vec::new(), slept_ms: 0, stalled_us: 0, t: 0, bridges }
     }
 
     fn port_class(&self, p: u16, n: u8) -> String {
@@ -196,6 +215,11 @@
     fn read(&mut self, at: Address, width: Access) -> Result<u64, Denied> {
         let n = bytes_of(width);
         let (space, addr, class) = self.classify(at, n);
+        if let (true, Address::PciConfig { bus, offset: off @ (0x0E | 0x19), .. }, Access::Byte) = (self.bridges, at, width) {
+            let v = if off == 0x0E { 0x01 } else { bus as u64 + 1 };
+            self.recs.push(Rec { space, write: false, width: n, at: addr, class, value: v, answered: "as a bridge" });
+            return Ok(v);
+        }
         if let Address::Memory(a) = at {
             if let Some((i, off)) = self.in_nvs(a, n) {
                 let mut v = 0u64;
@@ -275,12 +299,14 @@
 const PLATFORM: &str = "0811B06E-4A27-44F9-8D60-3CBBC22E7B48";
 const INTEL: &str = "4077A616-290C-47BE-9EBD-D87058713953";
 
+#[derive(Clone)]
 struct Bench {
     dir: PathBuf,
     map: Vec<Range>,
     ports: Vec<(u64, u64, &'static str)>,
     nvs: Vec<Nvs>,
     tables: Vec<(String, Vec<u8>)>,
+    bridges: bool,
 }
 
 fn tables(dir: &Path) -> Vec<(String, Vec<u8>)> {
@@ -316,12 +342,12 @@
 }
 
 impl Bench {
-    fn open(dir: &Path) -> Bench {
-        Bench { dir: dir.to_path_buf(), map: memmap(dir), ports: fadt_ports(dir), nvs: nvs_dumps(dir), tables: tables(dir) }
+    fn open(dir: &Path, bridges: bool) -> Bench {
+        Bench { dir: dir.to_path_buf(), map: memmap(dir), ports: fadt_ports(dir), nvs: nvs_dumps(dir), tables: tables(dir), bridges }
     }
 
     fn host(&self, mode: Mode) -> Tracer {
-        Tracer::new(&self.map, &self.ports, &self.nvs, mode)
+        Tracer::new(&self.map, &self.ports, &self.nvs, mode, self.bridges)
     }
 
     /// Every table loaded into a fresh interpreter, in order; each one's result.
@@ -503,13 +529,14 @@
     let mut argv = std::env::args().skip(1);
     let dir = PathBuf::from(argv.next().expect("bench dump dir"));
     let out = PathBuf::from(argv.next().expect("output dir"));
+    let extended = argv.next().as_deref() == Some("bridges");
     fs::create_dir_all(&out).unwrap();
-    let child = std::thread::Builder::new().stack_size(256 << 20).spawn(move || body(&dir, &out)).unwrap();
+    let child = std::thread::Builder::new().stack_size(256 << 20).spawn(move || body(&dir, &out, extended)).unwrap();
     child.join().unwrap();
 }
 
-fn body(dir: &Path, out: &Path) {
-    let b = Bench::open(dir);
+fn body(dir: &Path, out: &Path, extended: bool) {
+    let b = Bench::open(dir, extended);
     let mut local = String::new();
     let mut sum = String::new();
 
@@ -520,6 +547,23 @@
     let ssdt_headers = headers.iter().filter(|n| n.starts_with("SSDT")).count();
     writeln!(sum, "SSDT headers in headers/: {ssdt_headers}; SSDTs whole in tables/: {}", b.tables.len() - 1).unwrap();
     writeln!(sum, "NVS ranges in the map: {}; dumped with bytes: {}", b.map.iter().filter(|r| r.label == "ACPI Non-volatile Storage").count(), b.nvs.len()).unwrap();
+    if extended {
+        // Each whole table against the header the dump took of it separately.
+        for (n, bytes) in &b.tables {
+            let header = fs::read(dir.join("headers").join(n)).unwrap_or_default();
+            let len = u32::from_le_bytes(bytes[4..8].try_into().unwrap()) as usize;
+            let sum0 = bytes.iter().fold(0u8, |s, x| s.wrapping_add(*x));
+            writeln!(
+                sum,
+                "{n}: {} bytes; header's length {}; checksum {}; first 36 bytes equal headers/{n}: {}",
+                bytes.len(),
+                len,
+                if sum0 == 0 { "sums to zero" } else { "does NOT sum to zero" },
+                header.len() == 36 && bytes.len() >= 36 && bytes[..36] == header[..]
+            )
+            .unwrap();
+        }
+    }
     for n in &b.nvs {
         writeln!(local, "nvs dump base={:#x} len={:#x} class={}", n.base, n.bytes.len(), mem_class(&b.map, n.base, n.bytes.len() as u64)).unwrap();
         writeln!(sum, "an NVS dump of {} bytes, wholly in a range the map types {}", n.bytes.len(), mem_class(&b.map, n.base, n.bytes.len() as u64)).unwrap();
@@ -531,6 +575,9 @@
     writeln!(sum, "\n## load (unrecorded reads answered 0)").unwrap();
     for (n, r) in &loaded {
         writeln!(sum, "{n}: {}", match r { Ok(()) => "loaded".to_string(), Err(e) => format!("refused: {}", kind(e)) }).unwrap();
+        if let (true, Err(e)) = (extended, r) {
+            writeln!(sum, "  {n} refused in full: {e:?}").unwrap();
+        }
     }
     for (k, v) in tally(&h.recs) {
         writeln!(sum, "  load access: {k} x{v}").unwrap();
@@ -697,9 +744,14 @@
 
     // --- The DSDT, then Linux's run-time blocks in its order, as `Load` would put them.
     if !dyns.is_empty() {
-        writeln!(sum, "\n## the DSDT, then Linux's run-time blocks loaded onto it in Linux's order (no static SSDT)").unwrap();
+        if extended {
+            writeln!(sum, "\n## every table in tables/, then Linux's run-time blocks loaded onto them in Linux's order").unwrap();
+        } else {
+            writeln!(sum, "\n## the DSDT, then Linux's run-time blocks loaded onto it in Linux's order (no static SSDT)").unwrap();
+        }
         let mut hh = b.host(Mode::Zero);
         let (mut ii, _) = b.load(&mut hh);
+        let before_dyn = hh.recs.len();
         for (_, n) in &dyns {
             let bytes = fs::read(dir.join("dynamic").join(n)).unwrap();
             let tid = String::from_utf8_lossy(&bytes[16..24]).trim_end_matches(['\0', ' ']).to_string();
@@ -709,6 +761,12 @@
             };
             writeln!(sum, "{tid}: {}", match r { Ok(()) => "loaded".to_string(), Err(e) => format!("refused: {}", kind(&e)) }).unwrap();
         }
+        if extended {
+            writeln!(sum, "accesses while the run-time blocks loaded: {}", hh.recs.len() - before_dyn).unwrap();
+            for (k, v) in tally(&hh.recs[before_dyn..]) {
+                writeln!(sum, "  run-time block load access: {k} x{v}").unwrap();
+            }
+        }
         let ps: BTreeSet<String> = walk(&ii).into_iter().map(|(p, _, _)| p).collect();
         for m in ["_OSC", "_PDC", "_CST", "_LPI", "_CPC", "_PSS", "_PCT", "_PSD"] {
             let n = processors.iter().filter(|p| ps.contains(&format!("{p}.{m}"))).count();
@@ -812,7 +870,7 @@
             .unwrap();
             writeln!(local, "nvs field {at:#x} w{w}: by caps {by_caps:x?}; dump {linux:#x}").unwrap();
             // The same commits on a dump whose field reads 0: what the firmware itself sets there.
-            let mut zeroed = Bench { dir: b.dir.clone(), map: b.map.clone(), ports: b.ports.clone(), nvs: b.nvs.clone(), tables: b.tables.clone() };
+            let mut zeroed = b.clone();
             for d in &mut zeroed.nvs {
                 if let Some(off) = at.checked_sub(d.base) {
                     if off + (*w as u64) <= d.bytes.len() as u64 {
@@ -833,6 +891,9 @@
             break; // one processor stands for the rest here; every processor's _OSC is listed in local.txt
         }
     }
+    if extended {
+        m1b(&b, dir, &processors, &inis, &mut sum, &mut local);
+    }
     let _ = &b.dir;
     fs::write(out.join("local.txt"), local).unwrap();
     fs::write(out.join("summary.txt"), sum).unwrap();
@@ -840,4 +901,580 @@
 
 fn i_eval_hid(i: &mut Interpreter, h: &mut Tracer, p: &str) -> Result<Value, Error> {
     i.evaluate(h, &format!("{p}._HID"), &[])
+}
+
+// ---------------------------------------------------------------- M1b
+
+/// A NameString (ACPI 6.5 §20.2.2) at `i`: its text, segments joined by
+/// dots after any `\` or `^` prefix, and the offset after it.
+fn name_string(b: &[u8], mut i: usize) -> Option<(String, usize)> {
+    let mut s = String::new();
+    while let Some(&c) = b.get(i) {
+        if c == b'\\' || c == b'^' {
+            s.push(c as char);
+            i += 1;
+        } else {
+            break;
+        }
+    }
+    let seg = |i: usize| -> Option<String> {
+        let x = b.get(i..i + 4)?;
+        let lead = x[0].is_ascii_uppercase() || x[0] == b'_';
+        let tail = x[1..].iter().all(|c| c.is_ascii_uppercase() || c.is_ascii_digit() || *c == b'_');
+        (lead && tail).then(|| String::from_utf8_lossy(x).into_owned())
+    };
+    match *b.get(i)? {
+        0x00 => Some((s, i + 1)),
+        0x2E => {
+            let (a, c) = (seg(i + 1)?, seg(i + 5)?);
+            Some((format!("{s}{a}.{c}"), i + 9))
+        }
+        0x2F => {
+            let n = *b.get(i + 1)? as usize;
+            let mut j = i + 2;
+            let mut segs = Vec::new();
+            for _ in 0..n {
+                segs.push(seg(j)?);
+                j += 4;
+            }
+            Some((format!("{s}{}", segs.join(".")), j))
+        }
+        _ => Some((format!("{s}{}", seg(i)?), i + 4)),
+    }
+}
+
+fn last_seg(n: &str) -> &str {
+    n.rsplit('.').next().unwrap().trim_start_matches(['\\', '^'])
+}
+
+/// A constant integer term (§20.2.3): Zero, One, Ones, or a prefixed constant.
+fn const_int(b: &[u8], i: usize) -> Option<(u64, usize)> {
+    match *b.get(i)? {
+        0x00 => Some((0, i + 1)),
+        0x01 => Some((1, i + 1)),
+        0xFF => Some((u64::MAX, i + 1)),
+        0x0A => Some((*b.get(i + 1)? as u64, i + 2)),
+        0x0B => Some((u16::from_le_bytes(b.get(i + 1..i + 3)?.try_into().ok()?) as u64, i + 3)),
+        0x0C => Some((u32::from_le_bytes(b.get(i + 1..i + 5)?.try_into().ok()?) as u64, i + 5)),
+        0x0E => Some((u64::from_le_bytes(b.get(i + 1..i + 9)?.try_into().ok()?), i + 9)),
+        _ => None,
+    }
+}
+
+/// A region's offset or length operand, as far as this reads it:
+/// `DerefOf (Index (Name, k))` with no target, a constant, or a name.
+#[derive(Clone, Debug)]
+enum Operand {
+    Elem(String, u64),
+    Const(u64),
+    Name(String),
+}
+
+fn operand(b: &[u8], i: usize) -> Option<(Operand, usize)> {
+    if b.get(i) == Some(&0x83) && b.get(i + 1) == Some(&0x88) {
+        let (n, j) = name_string(b, i + 2)?;
+        let (k, j) = const_int(b, j)?;
+        if b.get(j) != Some(&0x00) {
+            return None;
+        }
+        return Some((Operand::Elem(n, k), j + 1));
+    }
+    if let Some((v, j)) = const_int(b, i) {
+        return Some((Operand::Const(v), j));
+    }
+    let (n, j) = name_string(b, i)?;
+    Some((Operand::Name(n), j))
+}
+
+/// One `Load (Src, Dst)` (DefLoad, Table 20.2) and the OperationRegion
+/// (DefOpRegion) nearest before it that declares `Src`.
+struct Site {
+    table: String,
+    at: usize,
+    src: String,
+    dst: String,
+    end: usize,
+    region: Option<(u8, Operand, Operand)>,
 }
+
+fn load_sites(tables: &[(String, Vec<u8>)]) -> Vec<Site> {
+    let mut out = Vec::new();
+    for (n, b) in tables {
+        let ops = scan_ops(b);
+        for &at in &ops["Load 5B20"] {
+            if in_named_buffer(b, at).is_some() {
+                continue;
+            }
+            let Some((src, j)) = name_string(b, at + 2) else { continue };
+            let Some((dst, end)) = name_string(b, j) else { continue };
+            let mut region = None;
+            for p in (36..at).rev() {
+                if b[p] != 0x5B || b[p + 1] != 0x80 {
+                    continue;
+                }
+                let Some((rn, q)) = name_string(b, p + 2) else { continue };
+                if last_seg(&rn) != last_seg(&src) {
+                    continue;
+                }
+                if let Some((off, q2)) = operand(b, q + 1) {
+                    if let Some((len, _)) = operand(b, q2) {
+                        region = Some((b[q], off, len));
+                    }
+                }
+                break;
+            }
+            out.push(Site { table: n.clone(), at, src, dst, end, region });
+        }
+    }
+    out
+}
+
+/// The tables with every site's `Load (Src, Dst)` rewritten in place to
+/// `Store (Ones, Dst)` and Noops, of the same length, the checksum (§5.2.6)
+/// made whole again.
+fn patched(tables: &[(String, Vec<u8>)], sites: &[Site]) -> Vec<(String, Vec<u8>)> {
+    let mut out = tables.to_vec();
+    for s in sites {
+        let (_, b) = out.iter_mut().find(|(n, _)| *n == s.table).unwrap();
+        let src_end = name_string(b, s.at + 2).unwrap().1;
+        let mut new = vec![0x70, 0xFF];
+        new.extend_from_slice(&b[src_end..s.end]);
+        new.extend(std::iter::repeat_n(0xA3u8, src_end - (s.at + 2)));
+        assert_eq!(new.len(), s.end - s.at);
+        b[s.at..s.end].copy_from_slice(&new);
+    }
+    for (_, b) in &mut out {
+        b[9] = 0;
+        let sum = b.iter().fold(0u8, |s, x| s.wrapping_add(*x));
+        b[9] = 0u8.wrapping_sub(sum);
+    }
+    out
+}
+
+/// What a site's region names, read from the loaded namespace: the label,
+/// address and length of the package elements it indexes.
+struct Source {
+    label: String,
+    at: u64,
+    len: u64,
+}
+
+fn resolve(paths: &BTreeSet<String>, name: &str) -> Vec<String> {
+    if name.starts_with('\\') {
+        let p = name.replace('.', ".");
+        return paths.iter().filter(|x| **x == p).cloned().collect();
+    }
+    let seg = last_seg(name);
+    let root = format!("\\{seg}");
+    if paths.contains(&root) {
+        return vec![root];
+    }
+    paths.iter().filter(|p| p.ends_with(&format!(".{seg}"))).cloned().collect()
+}
+
+fn source_of(i: &mut Interpreter, h: &mut Tracer, paths: &BTreeSet<String>, s: &Site) -> Result<Source, String> {
+    let Some((space, off, len)) = &s.region else { return Err("no region decoded".into()) };
+    if *space != 0 {
+        return Err(format!("region space {space:#x}, not SystemMemory"));
+    }
+    let mut elem = |o: &Operand| -> Result<(u64, Option<String>), String> {
+        match o {
+            Operand::Const(v) => Ok((*v, None)),
+            Operand::Name(n) => {
+                let p = resolve(paths, n);
+                if p.len() != 1 {
+                    return Err(format!("{n} resolves to {} objects", p.len()));
+                }
+                match i.evaluate(h, &p[0], &[]) {
+                    Ok(Value::Integer(v)) => Ok((v, None)),
+                    other => Err(format!("{n} evaluates to {}", decode(&other))),
+                }
+            }
+            Operand::Elem(n, k) => {
+                let p = resolve(paths, n);
+                if p.len() != 1 {
+                    return Err(format!("{n} resolves to {} objects", p.len()));
+                }
+                match i.evaluate(h, &p[0], &[]) {
+                    Ok(Value::Package(e)) => {
+                        let v = match e.get(*k as usize) {
+                            Some(Value::Integer(v)) => *v,
+                            _ => return Err(format!("{n}[{k}] is no integer")),
+                        };
+                        let label = match (*k as usize).checked_sub(1).and_then(|j| e.get(j)) {
+                            Some(Value::String(t)) => Some(String::from_utf8_lossy(t).trim().to_string()),
+                            _ => None,
+                        };
+                        Ok((v, label))
+                    }
+                    other => Err(format!("{n} evaluates to {}", decode(&other))),
+                }
+            }
+        }
+    };
+    let (at, label) = elem(off)?;
+    let (len, _) = elem(len)?;
+    Ok(Source { label: label.unwrap_or_else(|| "(unlabelled)".into()), at, len })
+}
+
+fn show(o: &Operand) -> String {
+    match o {
+        Operand::Elem(n, k) => format!("DerefOf ({n} [{k}])"),
+        Operand::Const(_) => "a constant".into(),
+        Operand::Name(n) => n.clone(),
+    }
+}
+
+fn dword2(r: &Result<Value, Error>) -> Option<u32> {
+    match r {
+        Ok(Value::Buffer(b)) if b.len() == 8 => Some(u32::from_le_bytes(b[4..8].try_into().unwrap())),
+        _ => None,
+    }
+}
+
+#[derive(PartialEq)]
+struct SeqOut {
+    steps: Vec<(String, String)>,
+    reached: Vec<(String, String)>,
+    blocks: Vec<(String, String)>,
+    recs: Vec<Rec>,
+    block_recs: usize,
+    inis: Vec<(String, String)>,
+    /// What the platform commit left in `\_SB.OSCP`, where a table defines one: for local.txt only.
+    notes: Vec<String>,
+}
+
+struct Plan<'a> {
+    bench: Bench,
+    processors: Vec<String>,
+    platform: bool,
+    /// Each site's Dst path in the namespace, and the label of the block its source names.
+    dsts: Vec<(String, String)>,
+    blocks: &'a BTreeMap<String, Vec<u8>>,
+}
+
+fn sequence(plan: &Plan, mode: Mode, inis: &[String], pcaps: u32, ccaps: u32, force: &[(u64, u8)]) -> SeqOut {
+    let mut h = plan.bench.host(mode);
+    for (a, v) in force {
+        for d in &mut h.overlay {
+            if let Some(off) = a.checked_sub(d.base) {
+                if (off as usize) < d.bytes.len() {
+                    d.bytes[off as usize] = *v;
+                }
+            }
+        }
+    }
+    let (mut i, _) = plan.bench.load(&mut h);
+    let mut ini_out = Vec::new();
+    for p in inis {
+        let r = i.evaluate(&mut h, p, &[]);
+        ini_out.push((p.clone(), match r { Ok(_) => "ran".into(), Err(e) => kind(&e) }));
+    }
+    let mark = h.recs.len();
+    let mut steps = Vec::new();
+    let mut reached: Vec<(String, String)> = Vec::new();
+    let mut blocks = Vec::new();
+    let mut block_recs = 0usize;
+    let mut done: BTreeSet<String> = BTreeSet::new();
+    let mut notes = Vec::new();
+    let mut check = |i: &mut Interpreter, h: &mut Tracer, who: &str, reached: &mut Vec<(String, String)>, blocks: &mut Vec<(String, String)>, block_recs: &mut usize| {
+        for (dst, label) in &plan.dsts {
+            if done.contains(dst) {
+                continue;
+            }
+            if let Ok(Value::Integer(v)) = i.evaluate(h, dst, &[]) {
+                if v != 0 {
+                    done.insert(dst.clone());
+                    reached.push((who.to_string(), label.clone()));
+                    let before = h.recs.len();
+                    let r = match plan.blocks.get(&label.to_ascii_uppercase()) {
+                        Some(bytes) => match toyos_acpi::Table::open(bytes.as_slice(), 0, b"SSDT", 36) {
+                            Ok(t) => match i.load(h, &t) {
+                                Ok(()) => "loaded".to_string(),
+                                Err(e) => format!("refused: {}", kind(&e)),
+                            },
+                            Err(e) => format!("refused: {e:?}"),
+                        },
+                        None => "no block of that OEM table ID in dynamic/".to_string(),
+                    };
+                    *block_recs += h.recs.len() - before;
+                    blocks.push((label.clone(), r));
+                }
+            }
+        }
+    };
+    if plan.platform {
+        let q = i.evaluate(&mut h, "\\_SB_._OSC", &args(PLATFORM, &[1, pcaps]));
+        let granted = dword2(&q).unwrap_or(0) & pcaps;
+        let c = i.evaluate(&mut h, "\\_SB_._OSC", &args(PLATFORM, &[0, granted]));
+        steps.push(("platform query".to_string(), decode(&q)));
+        steps.push(("platform commit".to_string(), decode(&c)));
+        check(&mut i, &mut h, "\\_SB._OSC", &mut reached, &mut blocks, &mut block_recs);
+        if let Ok(v) = i.evaluate(&mut h, "\\_SB_.OSCP", &[]) {
+            notes.push(format!("\\_SB.OSCP after the platform commit: {v:x?}"));
+        }
+    }
+    for p in &plan.processors {
+        let path = format!("{p}._OSC");
+        let q = i.evaluate(&mut h, &path, &args(INTEL, &[1, ccaps]));
+        let granted = dword2(&q).unwrap_or(0) & ccaps;
+        let c = i.evaluate(&mut h, &path, &args(INTEL, &[0, granted]));
+        steps.push((format!("{p} query"), decode(&q)));
+        steps.push((format!("{p} commit"), decode(&c)));
+        check(&mut i, &mut h, p, &mut reached, &mut blocks, &mut block_recs);
+    }
+    SeqOut { steps, reached, blocks, recs: h.recs[mark..].to_vec(), block_recs, inis: ini_out, notes }
+}
+
+/// Byte addresses a record covers, in SystemMemory only.
+fn mem_bytes(r: &Rec) -> Option<std::ops::Range<u64>> {
+    (r.space == "SystemMemory").then(|| r.at..r.at + r.width as u64)
+}
+
+fn m1b(b: &Bench, dir: &Path, processors: &[String], inis: &[String], sum: &mut String, local: &mut String) {
+    // --- K3: each Load site's source.
+    writeln!(sum, "\n## M1b: each Load site's source (K3)").unwrap();
+    let sites = load_sites(&b.tables);
+    writeln!(sum, "Load sites outside named Buffers, over every table: {}", sites.len()).unwrap();
+    let mut h = b.host(Mode::Deny);
+    let (mut i, _) = b.load(&mut h);
+    let paths: BTreeSet<String> = walk(&i).into_iter().map(|(p, _, _)| p).collect();
+    let mut dyn_blocks: BTreeMap<String, Vec<u8>> = BTreeMap::new();
+    if let Ok(rd) = fs::read_dir(dir.join("dynamic")) {
+        for e in rd {
+            let bytes = fs::read(e.unwrap().path()).unwrap();
+            let tid = String::from_utf8_lossy(&bytes[16..24]).trim_end_matches(['\0', ' ']).to_ascii_uppercase();
+            dyn_blocks.insert(tid, bytes);
+        }
+    }
+    let mut dsts = Vec::new();
+    let mut named_elems: BTreeSet<(String, u64)> = BTreeSet::new();
+    for s in &sites {
+        let reg = match &s.region {
+            Some((space, off, len)) => format!("region space {space:#x}, offset {}, length {}", show(off), show(len)),
+            None => "no OperationRegion of that name decoded before it".into(),
+        };
+        if let Some((_, Operand::Elem(n, k), Operand::Elem(_, k2))) = &s.region {
+            named_elems.insert((last_seg(n).to_string(), *k));
+            named_elems.insert((last_seg(n).to_string(), *k2));
+            if let Some(kl) = k.checked_sub(1) {
+                named_elems.insert((last_seg(n).to_string(), kl));
+            }
+        }
+        let src = source_of(&mut i, &mut h, &paths, s);
+        let line = match &src {
+            Ok(x) => {
+                let class = mem_class(&b.map, x.at, x.len);
+                let linux = match dyn_blocks.get(&x.label.to_ascii_uppercase()) {
+                    Some(d) => format!("Linux's run-time block of that OEM table ID: {} bytes, equal to the region's length: {}", d.len(), d.len() as u64 == x.len),
+                    None => "no run-time block of that OEM table ID in dynamic/".into(),
+                };
+                writeln!(local, "site {} {:#x}: {} at {:#x} len {:#x}", s.table, s.at, x.label, x.at, x.len).unwrap();
+                format!("names {} of {} bytes, wholly in a range the map types {class}; {linux}", x.label, x.len)
+            }
+            Err(e) => format!("source unresolved: {e}"),
+        };
+        writeln!(sum, "{}: Load ({}, {}): {reg}; {line}", s.table, s.src, s.dst).unwrap();
+        let label = src.map(|x| x.label).unwrap_or_default();
+        for p in paths.iter().filter(|p| last_seg(p) == last_seg(&s.dst) && (p.ends_with(&format!(".{}", last_seg(&s.dst))) || **p == format!("\\{}", last_seg(&s.dst)))) {
+            dsts.push((p.clone(), label.clone()));
+        }
+    }
+    // Package entries that look like (label, address, length) and no site names.
+    let pkgs: BTreeSet<String> = named_elems.iter().map(|(n, _)| n.clone()).collect();
+    for n in &pkgs {
+        for p in resolve(&paths, n) {
+            if let Ok(Value::Package(e)) = i.evaluate(&mut h, &p, &[]) {
+                for k in 0..e.len() {
+                    if let (Some(Value::String(t)), Some(Value::Integer(at)), Some(Value::Integer(len))) = (e.get(k), e.get(k + 1), e.get(k + 2)) {
+                        if !named_elems.contains(&(n.clone(), k as u64 + 1)) {
+                            writeln!(sum, "{p}: entry {} of {len:#x} bytes is named by no Load site; its address lies in a range the map types {}", String::from_utf8_lossy(t).trim(), mem_class(&b.map, *at, *len)).unwrap();
+                        }
+                    }
+                }
+            }
+        }
+    }
+    writeln!(sum, "Dst objects the rewritten tables set: {}", dsts.len()).unwrap();
+    for (d, l) in &dsts {
+        writeln!(sum, "  {d} <- {l}").unwrap();
+    }
+
+    // --- The _OSC sequences, past each Load.
+    let pb = Bench { tables: patched(&b.tables, &sites), ..b.clone() };
+    let procs: Vec<String> = processors.iter().filter(|p| paths.contains(&format!("{p}._OSC"))).cloned().collect();
+    let plan = Plan { bench: pb, processors: procs.clone(), platform: paths.contains("\\_SB_._OSC"), dsts, blocks: &dyn_blocks };
+    writeln!(sum, "\n## M1b: \\_SB._OSC, then each processor's _OSC in walk order ({}), query then commit with what the query granted, in one namespace, every Load rewritten", procs.len()).unwrap();
+    {
+        let mut hp = plan.bench.host(Mode::Deny);
+        let (_, loaded) = plan.bench.load(&mut hp);
+        let refused: Vec<String> = loaded.iter().filter_map(|(n, r)| r.as_ref().err().map(|e| format!("{n}: {e:?}"))).collect();
+        writeln!(sum, "the rewritten tables load with refusals: {refused:?}").unwrap();
+    }
+    let mut sets: Vec<(String, u32, u32)> = vec![("S1: platform 0, processors 0".into(), 0, 0)];
+    if !procs.is_empty() {
+        for bit in 0..=13u32 {
+            if bit != 10 {
+                sets.push((format!("processors bit {bit}"), 0, 1 << bit));
+            }
+        }
+    }
+    if plan.platform {
+        for bit in 0..=22u32 {
+            sets.push((format!("platform bit {bit}"), 1 << bit, 0));
+        }
+    }
+    sets.push(("every bit: platform 0x7FFFFF, processors 0x3BFF".into(), 0x7F_FFFF, 0x3BFF));
+    let mut read_bytes: BTreeMap<u64, BTreeSet<String>> = BTreeMap::new();
+    let mut all_k1 = 0usize;
+    let mut differs = 0usize;
+    for mode in [Mode::Deny, Mode::Zero] {
+        for (name, pc, cc) in &sets {
+            let plain = sequence(&plan, mode, &[], *pc, *cc, &[]);
+            let with = sequence(&plan, mode, inis, *pc, *cc, &[]);
+            let k1 = k1_writes(&plain.recs).len() + k1_writes(&with.recs).len();
+            all_k1 += k1;
+            let same = plain.steps == with.steps && plain.reached == with.reached && plain.blocks == with.blocks && plain.recs == with.recs;
+            if !same {
+                differs += 1;
+            }
+            for r in plain.recs.iter().filter(|r| !r.write) {
+                if let Some(rg) = mem_bytes(r) {
+                    for a in rg {
+                        read_bytes.entry(a).or_default().insert(name.clone());
+                    }
+                }
+            }
+            let mut by: BTreeMap<String, usize> = BTreeMap::new();
+            for (w, d) in &plain.steps {
+                if w.starts_with("\\_SB_.PR") || (w != "platform query" && w != "platform commit") {
+                    *by.entry(format!("{} {d}", if w.ends_with("query") { "query" } else { "commit" })).or_insert(0) += 1;
+                }
+            }
+            let plat: Vec<String> = plain.steps.iter().filter(|(w, _)| w.starts_with("platform")).map(|(w, d)| format!("{w}: {d}")).collect();
+            let reached: Vec<String> = plain.reached.iter().map(|(w, l)| format!("{l} (by {})", if w.starts_with("\\_SB_.PR") || w.starts_with("\\_PR_") { if w == &procs[0] { "the first processor" } else { "a later processor" } } else { w.as_str() })).collect();
+            let blocks: Vec<String> = plain.blocks.iter().map(|(l, r)| format!("{l}: {r}")).collect();
+            writeln!(
+                sum,
+                "[{mode:?}] {name} | {} | processors: {by:?} | Loads reached: {reached:?} | blocks then loaded: {blocks:?} ({} accesses) | accesses {} / {} with _INIs first | K1-class writes {k1} | same with and without _INIs: {same}",
+                plat.join("; "),
+                plain.block_recs,
+                plain.recs.len(),
+                with.recs.len()
+            )
+            .unwrap();
+            for (k, v) in tally(&plain.recs) {
+                writeln!(sum, "    access: {k} x{v}").unwrap();
+            }
+            if !same {
+                let wr: Vec<String> = with.reached.iter().map(|(_, l)| l.clone()).collect();
+                writeln!(sum, "    with _INIs first: Loads reached {wr:?}").unwrap();
+                for (k, v) in tally(&with.recs) {
+                    writeln!(sum, "    access with _INIs first: {k} x{v}").unwrap();
+                }
+            }
+            for r in &plain.recs {
+                writeln!(local, "[{mode:?}] seq {name} plain {r:?}").unwrap();
+            }
+            for (w, d) in &plain.steps {
+                writeln!(local, "[{mode:?}] seq {name} step {w}: {d}").unwrap();
+            }
+            for (w, l) in &plain.reached {
+                writeln!(local, "[{mode:?}] seq {name} reached {l} by {w}").unwrap();
+            }
+            for n in &plain.notes {
+                writeln!(local, "[{mode:?}] seq {name} note {n}").unwrap();
+            }
+        }
+    }
+    writeln!(sum, "sequences whose steps, Loads, blocks or accesses differ with _INIs first: {differs}; K1-class writes over all sequences, blocks' loads included: {all_k1}").unwrap();
+
+    // --- K2 through memory: bytes an _OSC sequence reads that an _INI writes.
+    writeln!(sum, "\n## M1b: what the sequences read that the _INIs write (K2 through memory)").unwrap();
+    let mut written: BTreeMap<u64, (String, u8, u8, u8)> = BTreeMap::new(); // byte -> (ini, width, value byte, dump byte)
+    for mode in [Mode::Deny, Mode::Zero] {
+        let mut hh = b.host(mode);
+        let (mut ii, _) = b.load(&mut hh);
+        for p in inis {
+            let before = hh.recs.len();
+            let r = ii.evaluate(&mut hh, p, &[]);
+            let mut w: BTreeMap<String, usize> = BTreeMap::new();
+            for x in hh.recs[before..].iter().filter(|x| x.write) {
+                *w.entry(format!("{} {}B {}", x.space, x.width, x.class)).or_insert(0) += 1;
+            }
+            if !w.is_empty() {
+                writeln!(sum, "[{mode:?}] {p} writes {w:?} and ends {}", match &r { Ok(_) => "having run".to_string(), Err(e) => kind(e) }).unwrap();
+            }
+            for r in hh.recs[before..].iter().filter(|r| r.write) {
+                if let Some(rg) = mem_bytes(r) {
+                    for (k, a) in rg.enumerate() {
+                        let dump = b.nvs.iter().find_map(|d| a.checked_sub(d.base).and_then(|o| d.bytes.get(o as usize).copied())).unwrap_or(0);
+                        written.insert(a, (p.clone(), r.width, (r.value >> (8 * k)) as u8, dump));
+                    }
+                }
+            }
+        }
+    }
+    writeln!(sum, "bytes the _INIs write in SystemMemory, both modes: {}", written.len()).unwrap();
+    let mut groups: BTreeMap<(String, u8), (Vec<u64>, BTreeSet<String>, bool)> = BTreeMap::new();
+    for (a, sets_reading) in &read_bytes {
+        if let Some((ini, w, v, d)) = written.get(a) {
+            let g = groups.entry((ini.clone(), *w)).or_insert((Vec::new(), BTreeSet::new(), true));
+            g.0.push(*a);
+            g.1.extend(sets_reading.iter().cloned());
+            g.2 &= v == d;
+        }
+    }
+    writeln!(sum, "of them read by a sequence without _INIs: {}, in {} field(s)", groups.values().map(|g| g.0.len()).sum::<usize>(), groups.len()).unwrap();
+    // Which field each is, by reading every field unit once and seeing what it touches.
+    let fields: Vec<String> = walk(&i).into_iter().filter(|(_, _, k)| *k == Kind::FieldUnit).map(|(p, _, _)| p).collect();
+    let mut field_of: BTreeMap<u64, Vec<String>> = BTreeMap::new();
+    if !groups.is_empty() {
+        let want: BTreeSet<u64> = groups.values().flat_map(|g| g.0.iter().copied()).collect();
+        for f in &fields {
+            let mut fh = b.host(Mode::Deny);
+            let _ = i.evaluate(&mut fh, f, &[]);
+            for r in &fh.recs {
+                if let Some(rg) = mem_bytes(r) {
+                    for a in rg {
+                        if want.contains(&a) {
+                            field_of.entry(a).or_default().push(f.clone());
+                        }
+                    }
+                }
+            }
+        }
+    }
+    for ((ini, w), (bytes, readers, equal)) in &groups {
+        let mut names: BTreeSet<String> = BTreeSet::new();
+        for a in bytes {
+            for f in field_of.get(a).into_iter().flatten() {
+                names.insert(f.clone());
+            }
+        }
+        writeln!(
+            sum,
+            "{ini} writes {w}-byte accesses there; {} byte(s) of it read; the field(s) reading them: {names:?}; the _INI's bytes equal the dump's (Linux's _INIs ran before it): {equal}; read by {} of the {} sequence cap sets",
+            bytes.len(),
+            readers.len(),
+            sets.len()
+        )
+        .unwrap();
+        writeln!(local, "ini-written {ini} w{w} bytes {:x?}", bytes).unwrap();
+        // Forced to 0x00 and to 0xFF, without _INIs: does any sequence come out otherwise?
+        for v in [0x00u8, 0xFF] {
+            let force: Vec<(u64, u8)> = bytes.iter().map(|a| (*a, v)).collect();
+            let mut changed = Vec::new();
+            for (name, pc, cc) in &sets {
+                let base = sequence(&plan, Mode::Deny, &[], *pc, *cc, &[]);
+                let f = sequence(&plan, Mode::Deny, &[], *pc, *cc, &force);
+                if base.steps != f.steps || base.reached != f.reached || base.blocks != f.blocks || k1_writes(&base.recs).len() != k1_writes(&f.recs).len() {
+                    let fr: Vec<String> = f.reached.iter().map(|(_, l)| l.clone()).collect();
+                    let br: Vec<String> = base.reached.iter().map(|(_, l)| l.clone()).collect();
+                    changed.push(format!("{name} (Loads reached {br:?} -> {fr:?}; steps equal: {})", base.steps == f.steps));
+                }
+            }
+            writeln!(sum, "  forced to {v:#04x} [Deny]: sequences whose results, Loads or K1-class writes change: {} {changed:?}", changed.len()).unwrap();
+        }
+    }
+}

@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

M1 on complete tables, part 7 of 7: the AMD bench's SSDT8 without its Scope. Both harnesses refuse SSDT8 whole with NotFound("\_SB_.PCI0.LPC0.EC0_") (parts 3 and 5). This run asks whether the block's Scope (\_SB.PCI0.LPC0.EC0) is the only cause, and what a whole-block refusal loses. It runs on a copy of the AMD's dump, outside the tree, with SSDT8 cut before that Scope, through part 6's harness without its third argument (the first run's harness). Every command exited as the log shows. Counts and decoded values only. Paths are written <dump>, <copy> and <out>.

What the block holds, from toplevel.py and enclosing.py below:

  • An If of 830 bytes whose predicate is the constant Zero (A0 4E 33 00). It holds only External declarations (15 …), one of them External (\_SB.PCI0.LPC0.EC0, DeviceObj). It never runs, on any machine.
  • Seven methods: M040, M041, M31A, M319, M31B, M038 and M039. Five of them name EC0_ in their bodies, and a method body is not resolved while a block loads.
  • Scope (\_SB.PCI0.LPC0.EC0), of 335 bytes. No table of the bench defines EC0_: its controller is \_SB.PCI0.LPC0.EC__.
  • SSDT11 declares \M038 and \M039 External, and calls them from its own methods M009 and M010.

The result. Cut before its Scope, SSDT8 loads, and the namespace gains 7 objects, as many as the block's methods. Nothing else in summary.txt changes, and local.txt is identical. So the Scope is the only cause, and a whole-block refusal costs the seven methods, two of which SSDT11 calls.

The run's log, whole:

$ toplevel.py <dump>/tables/SSDT8
If  (830 bytes)
Method M040 (31 bytes)
Method M041 (31 bytes)
Method M31A (31 bytes)
Method M319 (31 bytes)
Method M31B (33 bytes)
Method M038 (40 bytes)
Method M039 (77 bytes)
Scope \_SB_.PCI0.LPC0.EC0_ (335 bytes)
EXIT=0
$ enclosing.py <dump>/tables/SSDT8 EC0_
EC0_: in Method None, in Device None
EC0_: in Method M040, in Device None
EC0_: in Method M041, in Device None
EC0_: in Method M31A, in Device None
EC0_: in Method M319, in Device None
EC0_: in Method M31B, in Device None
EC0_: in Method None, in Device None
EXIT=0
$ enclosing.py <dump>/tables/SSDT11 M038 M039
M038: in Method None, in Device None
M038: in Method M009, in Device None
M039: in Method None, in Device None
M039: in Method M010, in Device None
EXIT=0
$ cp -R <dump> <copy>
EXIT=0
$ cut.py <copy>/tables/SSDT8 1148
cut to 1148 bytes; checksum sums to zero
EXIT=0
$ m1-harness <copy> <out>    # no third argument: the first run harness
EXIT=0
$ diff <part 5 summary.txt> <out>/summary.txt
15c15
< SSDT8: refused: NotFound
---
> SSDT8: loaded
32c32
< objects: 3169
---
> objects: 3176
EXIT=1
$ diff <part 5 local.txt> <out>/local.txt
EXIT=0

toplevel.py:

# Top-level terms of one definition block (ACPI 6.5 §20.2): opcode, name, length.
import sys
b = open(sys.argv[1], 'rb').read()
def pkglen(i):
    lead = b[i]; n = lead >> 6
    if n == 0: return lead & 0x3F, i + 1
    v = lead & 0x0F
    for k in range(n): v |= b[i + 1 + k] << (4 + 8 * k)
    return v, i + 1 + n
def name(i):
    s = ''
    while b[i] in (0x5C, 0x5E): s += chr(b[i]); i += 1
    if b[i] == 0x00: return s, i + 1
    if b[i] == 0x2E: return s + b[i+1:i+5].decode() + '.' + b[i+5:i+9].decode(), i + 9
    if b[i] == 0x2F:
        n = b[i+1]; segs = [b[i+2+4*k:i+6+4*k].decode() for k in range(n)]; return s + '.'.join(segs), i + 2 + 4 * n
    return s + b[i:i+4].decode(), i + 4
i = 36
ops = {0x10: 'Scope', 0x14: 'Method', 0x08: 'Name', 0x15: 'External', (0x5B, 0x82): 'Device', (0x5B, 0x80): 'OperationRegion', (0x5B, 0x81): 'Field', (0x5B, 0x83): 'Processor', (0x5B, 0x85): 'ThermalZone', (0x5B, 0x84): 'PowerResource', 0xA0: 'If'}
while i < len(b):
    op = b[i]
    if op == 0x5B:
        k = (0x5B, b[i+1]); start = i + 2
    else:
        k = op; start = i + 1
    kind = ops.get(k)
    if kind is None:
        print(f'+{i}: opcode {b[i]:#04x} {b[i+1]:#04x} not decoded here; stop'); break
    if kind in ('Name', 'External'):
        n, j = name(start)
        print(f'{kind} {n}')
        if kind == 'External':
            i = j + 2; continue
        # skip a Name's data object only if simple; stop otherwise
        print('  (stopping at a Name: its data object is not walked here)'); break
    ln, j = pkglen(start)
    end = start + ln
    if kind in ('OperationRegion',):
        n, _ = name(start); print(f'{kind} {n}'); break
    n, _ = name(j) if kind != 'If' else ('', j)
    print(f'{kind} {n} ({ln} bytes)')
    i = end

enclosing.py:

# For each occurrence of a NameSeg in a block, the innermost Method and Device
# whose PkgLength covers it (a backward scan for 0x14 / 0x5B 0x82 whose decoded
# range covers the offset and whose name decodes; a heuristic, not a parse).
import sys
b = open(sys.argv[1], 'rb').read()
def seg_ok(x):
    return len(x) == 4 and (chr(x[0]).isupper() or x[0] == 0x5F) and all(chr(c).isupper() or chr(c).isdigit() or c == 0x5F for c in x[1:])
def pkg(i):
    lead = b[i]; n = lead >> 6
    if n == 0: return lead & 0x3F, i + 1
    v = lead & 0x0F
    for k in range(n): v |= b[i + 1 + k] << (4 + 8 * k)
    return v, i + 1 + n
def name(i):
    s = ''
    while i < len(b) and b[i] in (0x5C, 0x5E): s += chr(b[i]); i += 1
    if b[i] == 0x2E and seg_ok(b[i+1:i+5]) and seg_ok(b[i+5:i+9]): return s + b[i+1:i+5].decode() + '.' + b[i+5:i+9].decode()
    if b[i] == 0x2F:
        n = b[i+1]; segs = [b[i+2+4*k:i+6+4*k] for k in range(n)]
        if all(seg_ok(x) for x in segs): return s + '.'.join(x.decode() for x in segs)
        return None
    return s + b[i:i+4].decode() if seg_ok(b[i:i+4]) else None
def enclosing(off, opc):
    best = None
    for p in range(36, off):
        if b[p:p+len(opc)] != opc: continue
        q = p + len(opc)
        try:
            ln, j = pkg(q); n = name(j)
        except IndexError:
            continue
        if n and q + ln > off and q + ln <= len(b):
            best = n  # later p wins: the innermost
    return best
for want in sys.argv[2:]:
    i = 0
    while True:
        i = b.find(want.encode(), i)
        if i < 0: break
        print(f'{want}: in Method {enclosing(i, bytes([0x14]))}, in Device {enclosing(i, bytes([0x5B, 0x82]))}')
        i += 1

cut.py:

# Cut one definition block before the term at byte offset `cut`, which must
# be a Scope (0x10) with a two-byte PkgLength and a root-relative name; set the
# header's length and make the checksum (ACPI 6.5 §5.2.6) whole again.
import sys
p, cut = sys.argv[1], int(sys.argv[2])
b = bytearray(open(p, 'rb').read())
assert b[cut] == 0x10 and b[cut + 1] >> 6 == 1 and b[cut + 3] == 0x5C, bytes(b[cut:cut + 8])
b = b[:cut]
b[4:8] = len(b).to_bytes(4, 'little')
b[9] = 0
b[9] = (-sum(b)) & 0xFF
assert sum(b) & 0xFF == 0
open(p, 'wb').write(b)
print(f'cut to {len(b)} bytes; checksum sums to zero')

The run's summary.txt, whole:

## inputs
definition blocks whole in tables/: 17
SSDT headers in headers/: 16; SSDTs whole in tables/: 16
NVS ranges in the map: 2; dumped with bytes: 0

## load (unrecorded reads answered 0)
DSDT: loaded
SSDT1: loaded
SSDT2: loaded
SSDT3: loaded
SSDT4: loaded
SSDT5: loaded
SSDT6: loaded
SSDT7: loaded
SSDT8: loaded
SSDT9: loaded
SSDT10: loaded
SSDT11: loaded
SSDT12: loaded
SSDT13: loaded
SSDT14: loaded
SSDT15: loaded
SSDT16: loaded
  load access: SystemIO read 1B a port the FADT does not name [zero] x6
  load access: SystemIO write 1B a port the FADT does not name [accepted] x6
  load access: SystemMemory read 1B NVS [zero] x2
  load access: SystemMemory read 1B Reserved [zero] x2
  load access: SystemMemory read 4B NVS [zero] x1
  load access: SystemMemory read 4B RAM [zero] x1

## namespace
objects: 3176
Processor objects: 0; ACPI0007 devices: 16
processors defining _OSC: 0
processors defining _PDC: 0
processors defining _CST: 16
processors defining _LPI: 16
processors defining _CPC: 0
_OSC objects anywhere: 2; \_SB_._OSC: true
_PDC objects anywhere: 0
_INI methods: 13; \_SB_._INI: false
[Deny] the _INIs in walk order: {"Host(unrecorded)": 2, "ran": 11}
    _INI access: SystemMemory read 1B NVS [denied] x1
    _INI access: SystemMemory read 1B RAM [denied] x1
[Zero] the _INIs in walk order: {"ran": 13}
    _INI access: SystemMemory read 1B NVS [zero] x1
    _INI access: SystemMemory read 1B RAM [zero] x1

## load sites (raw byte scan of each block after its header)
DSDT: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT1: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT2: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT3: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT4: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT5: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT6: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT7: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT8: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT9: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT10: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT11: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT12: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT13: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT14: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT15: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0
SSDT16: DataTableRegion 5B88: 0, Load 5B20: 0, LoadTable 5B1F: 0, Unload 5B2A: 0

## Linux's run-time blocks (dynamic/)
blocks: 0

## _OSC runs
targets: 1

### \_SB._OSC (platform UUID)
[Deny] caps 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps 0, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 0, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 1, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 1, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 2, query: Buffer(8): DWORD1=0x1 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x4 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 2, commit: Buffer(8): DWORD1=0x0 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x4 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 3, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 3, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 4, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 4, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 5, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 5, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 6, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 6, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 7, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 7, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 8, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 8, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 9, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 9, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 10, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 10, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 11, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 11, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 12, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 12, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 13, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 13, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 14, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 14, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 15, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 15, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 16, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 16, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 17, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 17, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 18, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 18, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 19, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 19, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 20, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 20, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 21, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 21, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 22, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Deny] caps bit 22, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps 0, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 0, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 0, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 1, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 1, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 2, query: Buffer(8): DWORD1=0x1 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x4 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 2, commit: Buffer(8): DWORD1=0x0 DWORD2=0x4 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x4 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 3, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 3, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 4, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 4, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 5, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 5, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 6, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 6, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 7, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 7, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 8, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 8, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 9, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 9, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 10, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 10, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 11, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 11, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 12, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 12, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 13, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 13, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 14, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 14, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 15, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 15, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 16, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 16, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 17, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 17, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 18, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 18, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 19, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 19, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 20, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 20, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 21, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 21, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 22, query: Buffer(8): DWORD1=0x1 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x1 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
[Zero] caps bit 22, commit: Buffer(8): DWORD1=0x0 DWORD2=0x0 | with _INIs first: Buffer(8): DWORD1=0x0 DWORD2=0x0 | accesses 0 / 0 | K1-class writes 0 | same with and without _INIs: true | notifies 0 | slept 0 ms, stalled 0 us
runs whose trace or result differ with _INIs first: 0; K1-class writes over all runs: 0

@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

M1's result on complete tables: K1–K5 decided. This supersedes what the first result left undecided for lack of the SSDTs. The logs are posted whole:

  • part 1 and part 2: the T14, extended harness;
  • part 3: the AMD bench, extended harness;
  • part 4 and part 5: the T14 and the AMD, the first run's harness unchanged;
  • part 6: the extended harness's diff and the runs' log;
  • part 7: the AMD's SSDT8 without its Scope.

They hold counts and decoded values only.

The inputs

  • Every SSDT is in the dumps now: the T14's 13 and the AMD's 16. Each table's length equals its header's, its bytes sum to zero, and its first 36 bytes equal the header dumped separately (parts 1 and 3).
  • The AMD's NVS bytes are still unread. /dev/mem refused both ranges. No _OSC run on the AMD makes any access, so no conclusion below rests on those bytes.
  • The T14's second boot, with intel_idle.max_cstate=0, has not been taken.

How it ran

  • The interpreter is this head's, 1547093ea, whose sources are main's 177e72a9e. It ran outside the tree with the tracing host of the first run.
  • The first run's harness, rebuilt unchanged (parts 4 and 5).
  • The extended harness (part 6). Without its third argument it writes the first run's harness's output byte for byte: cmp exit 0 on both benches. Behind bridges it adds:
    • A bridge answer. The 2 configuration reads that the walk to a region below a bridge makes are answered as a PCI-to-PCI bridge, because the dump holds no configuration space. Without that answer the T14's SSDT7 is refused Bridge; with it, all 14 of the T14's tables load. On metal the kernel answers those reads from the device.

    • Each Load site's source, decoded from the bytes and typed by the memory map.

    • The sequence S1 runs. \_SB._OSC, then each processor's _OSC in walk order, each a query and then a commit with what the query granted, in one namespace. The tables are copies in which every Load (Src, Dst) is rewritten, at the same length and checksum, to Store (Ones, Dst). When a commit sets a Dst, Linux's run-time block with the OEM table ID its source names is loaded. On the T14 that is 38 capability sets:

      • S1's zero;
      • each of Intel Table 1's 13 defined bits;
      • each of Table 6.13's 23 bits;
      • every bit.

      Each set runs in both modes, with and without the _INIs first: 152 sequences. The AMD has 25 sets and 100 sequences.

    • K2's channel through memory. The harness reads which bytes a sequence reads that an _INI writes, then forces those bytes to 0x00 and to 0xFF. The dump was taken after Linux's _INIs ran, so the with-and-without comparison cannot see this channel.

  • Every build and run exited 0 (parts 6 and 7).

K1–K5

K1 (_OSC writes SMI_CMD, configuration space, or memory outside NVS and reserved): does not fire for _OSC or the blocks it loads, on either bench. It fires for the walk K2 brings into S1.

  • The T14. No sequence makes a K1-class write, block loads included. The 8 run-time blocks load with 0 accesses. Only Table 6.13's bit 5, alone or within every bit, makes an _OSC write at all: the platform _OSC makes two 4-byte NVS writes, and the first processor's makes one 1-byte NVS write (appendix). Intel bits alone make reads only.
  • The AMD. Its \_SB._OSC makes no access in any run.
  • The walk. Its writes are below, under K2.

K2 (_OSC depends on an _INI): fires on the T14, through memory. Does not fire on the AMD.

  • The direct comparison sees nothing. None of the T14's 76 sequence pairs differs with the 45 _INIs run first: steps, loads, blocks and accesses all equal.

  • The channel through memory.

    • In every one of the 38 sets, the processors' _OSC read \OSYS, 2 bytes of NVS that \_SB.PC00._INI writes. The trace places the read among the processors' accesses (appendix): under S1's set the platform _OSC makes none, and under bit 5 each processor reads it.
    • ToyOS's interpreter writes there the bytes that Linux's run of that _INI left in the dump. That is why the comparison cannot differ.
  • Forced to 0x00, three sets reach fewer Loads:

    • Table 6.13's bit 0 (Processor Aggregator Device) and bit 5 (CPPC) each lose APHWP;
    • every bit loses CPU0HWP and APHWP.

    Forced to 0xFF, none changes. S1's set and Intel bits 8 and 9 are unchanged either way.

  • What \OSYS holds on metal before that _INI runs is not in a dump taken after it.

  • So the walk is built first, inside S1, as K2 says: S1 runs S3's \_SB._INI and _STA/_INI walk before _OSC. That is the order the roast reads in §6.5.1, so S1's order changes once, not twice as the roast expected.

  • What M1 fixes is narrower than the walk. \_SB.PC00._INI must run before the processors' _OSC. How the walk interleaves with each device's own _OSC is the build's to settle, under §6.2.11's "Device specific objects are evaluated after _OSC invocation".

  • The AMD. None of its 50 sequence pairs differs. Its _INIs write no SystemMemory.

What the walk writes, now on S1's path. These are K1-class writes, on the T14:

  • \_SB.PC00.LPCB.EC._INI writes SMI_CMD 10,001 times in both modes and ends at the sleep bound. That is the first result's finding, unchanged with every table. Today the server denies that write by name.
  • \_SB.PC00.UA00.BTH0._INI writes 4 bytes of SystemMemory twice, outside every range the map lists, when unrecorded reads answer 0. When they are denied, it stops before that write. What it reads on metal decides whether it writes there.
  • The _INIs write 44 bytes of SystemMemory in all. The sequences read only \OSYS's 2 of them, and none of what the controller's or BTH0's _INI writes.

So S1 waits on S2's ruling on AML writing SMI_CMD, and on memory outside the map, as K1 says.

K3 (a Load source outside Table 15.6's two types): does not fire.

  • The T14's 8 Loads are all in SSDT1, OEM table ID CpuSsdt. Each loads from a SystemMemory region whose offset and length are elements of the package \SSDT.

  • Each names a block wholly in a range the map labels Reserved (AddressRangeReserved), and of the length of Linux's run-time block with that OEM table ID: 8 of 8.

  • HWPLVT, one more entry of \SSDT, has length 0x80000000 and lies across ranges of the map. No Load names it.

  • No other load sites.

    • The T14's other 13 tables hold no Load, DataTableRegion or Unload. They hold one LoadTable byte pair, in the DSDT, and it is data inside a Buffer.
    • The AMD's 17 tables hold none.

    Both were read by a byte scan, which misses none.

  • What a dump cannot show is the bytes at those Reserved ranges. The match is by OEM table ID and length, and each of Linux's blocks sums to zero. On metal, S1's line for each run-time load, and its checksum check, close that.

K4 (a bench's processors define _PDC and no _OSC): does not fire on either bench.

  • The T14. All 24 Processor objects define both.
  • The AMD. Its 16 ACPI0007 devices define neither.

"Never evaluate _PDC" needs no ruling.

K5 (the AMD's processors have no _OSC and run no Load): fires. No ACPI0007 defines _OSC, no table holds a load site, and Linux loaded no block at run time. The AMD's half of S1 is \_SB._OSC alone.

  • Its answers. It answers the query with DWORD 1 = 0x1 and the commit with 0x0. Asked for every bit, it grants Table 6.13's bit 2 (_PR3 Support) alone.
  • Linux agrees. Linux's log of that boot reads platform _OSC: OS control mask [00000004] under its own support mask, the same grant from a third-party interpreter.
  • Its processors' idle states are static. All 16 define _CST and _LPI without a load.

For the staging, beyond K1–K5

S1 loads a block on the T14. With DWORD 2 = 0 for both UUIDs, the first processor's commit reaches the Load of CPU0PSD, 459 bytes. That holds in both modes, with and without the _INIs, and with \OSYS forced either way. So Load gets its first hardware reading at S1's T14 row, and the roast's "S1 probably loads nothing on the T14's metal" is false.

Which capability bit loads which block on the T14, each bit passed alone:

capabilities blocks loaded
none (S1) CPU0PSD
Intel bit 3 or 4 CPU0CST, CPU0PSD, APCST
any other single Intel bit, 8 and 9 included CPU0PSD
Table 6.13 bit 0 (Processor Aggregator Device) CPU0PSD, APHWP
Table 6.13 bit 5 (CPPC) CPU0PSD, APPSD, APHWP
any other single Table 6.13 bit CPU0PSD
every bit all 8 that Linux loaded

For #870: bits 8 and 9 alone load no _CST. On the T14 a _CST block loads with Intel bit 3 or bit 4. Intel 302223-007 Table 1 defines those as "independent C1, P state and T state support for each processor" and "independent C2 and C3 state support for each processor". On this evidence #870's set has to claim and honour one of them as well, or the T14 gives it no _CST. M1 ran the bits singly; it ran them together only as every bit.

Linux's capabilities, by halves.

  • The platform half. The first result found where it is recorded: one bit of an NVS DWORD, set in Linux's dump.
  • The processor half is recorded in no memory. No Intel bit makes a processor _OSC write memory: its one write, a byte of NVS, comes with Table 6.13's bit 5. So what Linux passed to the processors is not in its dump. The check S1 can make outside the tree is therefore by set: every bit loads exactly the 8 blocks Linux lists.

The processors' query answers.

  • 14 of the 24 answer every query with DWORD 2 = 0x1, whatever was passed, 0 included.
  • The other 10 return what was passed, except bits 12 and 13, which they clear.
  • The harness's commit sends only what was asked and granted, as the design's rule says, so the unasked bit is dropped. Every commit answers DWORD 1 = 0.

The T14's \_SB._OSC answers as in the first result. Capabilities Masked is set in every run that does not pass bit 5.

The AMD's SSDT8 is refused whole, and Linux keeps most of it (part 7).

  • The cause. The block ends in Scope (\_SB.PCI0.LPC0.EC0), and no table of the bench defines EC0_: its controller is EC__.
  • Linux sees the same defect. Its log of that boot reads ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PCI0.LPC0.EC0], AE_NOT_FOUND, and it counts 17 tables loaded.
  • The Scope is the only cause. Cut before it, the block loads with 7 more objects, as many as its methods; nothing else in the run changes. Its other term is an If (Zero) holding External declarations, which never runs.
  • The cost of refusing it whole. SSDT11 calls two of those methods, M038 and M039, from its own M009 and M010.
  • The specification. ACPI 6.5 §19.6.122 reads: "The object referred to by Location must already exist in the namespace." It says what the block must be, not what OSPM does with one that is not.

Question for the orchestrator, and through it the owner: "finished" line 4 ("every block the firmware loads loads, and no method the server evaluates is refused") and S2's exit ("all 17 tables loaded") cannot hold on the AMD while a block that breaks a rule is refused whole.

  • (a) Refuse it whole, as the interpreter does now and as the design's refusal of malformed AML reads. The AMD then records SSDT8 as the firmware's defect, and any evaluation reaching M009 or M010 is refused by name. Line 4 and S2's exit then read 16 of 17 tables on the AMD.
  • (b) Refuse only the unresolvable Scope and keep the rest of the block. Line 4 then holds on the AMD. The cost is that the interpreter accepts part of a block the specification calls wrong, and needs a rule for which terms survive a failed one.

My recommendation is (a). It is the refusal by name the trust boundary already makes, and (b) is a tolerance written for one firmware's defect.

Appendix: the order of accesses in two sequences

Read from the extended harness's local.txt for the T14 (part 6), which stays on the development host because it holds addresses. This script prints only each access's position, direction, width and the map's type.

trace_order.py:

# One M1b sequence's accesses from local.txt, in order: index, direction,
# width and the map's type of each write and each 2-byte read. No address.
import re, sys
path, seq = sys.argv[1], sys.argv[2]
recs = [l for l in open(path) if l.startswith(f'[Deny] seq {seq} plain ')]
print(f'{seq}: {len(recs)} accesses')
for k, l in enumerate(recs):
    write = 'write: true' in l
    width = re.search(r'width: (\d+)', l).group(1)
    cls = re.search(r'class: "([^"]*)"', l).group(1)
    if write or width == '2':
        print(f'  #{k}: {"write" if write else "read"} {width}B {cls}')

Its log, whole:

$ trace_order.py <out>/t14/local.txt 'S1: platform 0, processors 0'
S1: platform 0, processors 0: 6 accesses
  #4: read 2B NVS
EXIT=0
$ trace_order.py <out>/t14/local.txt 'platform bit 5'
platform bit 5: 103 accesses
  #1: write 4B NVS
  #3: write 4B NVS
  #8: read 2B NVS
  #10: write 1B NVS
  #11: read 2B NVS
  #15: read 2B NVS
  #19: read 2B NVS
  #23: read 2B NVS
  #27: read 2B NVS
  #31: read 2B NVS
  #35: read 2B NVS
  #39: read 2B NVS
  #43: read 2B NVS
  #47: read 2B NVS
  #51: read 2B NVS
  #55: read 2B NVS
  #59: read 2B NVS
  #63: read 2B NVS
  #67: read 2B NVS
  #71: read 2B NVS
  #75: read 2B NVS
  #79: read 2B NVS
  #83: read 2B NVS
  #87: read 2B NVS
  #91: read 2B NVS
  #95: read 2B NVS
  #99: read 2B NVS
EXIT=0

Japabu added a commit that referenced this pull request Oct 12, 2026
The owner accepted #875's design with "do the full aml in one pr", so
the six slices are no longer six pull requests.

M1, run on both benches' complete tables, fixes their order inside it.
The T14's processors' _OSC read \OSYS, which \_SB.PC00._INI writes;
forced to zero, it loses a block under CPPC. So the _STA/_INI walk runs
before _OSC. That walk writes SMI_CMD and memory outside the map, so S2's
ruling on those writes comes first.

What M1 found false in the track:
- no processor _OSC records in memory what it was passed, so the
  capabilities differential is by set (every bit loads the eight blocks
  Linux lists), not by Linux's recorded value;
- the DSDT's one LoadTable byte pair is data inside a Buffer, not an
  opcode, so the Load bullet is S1's alone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
@Japabu Japabu changed the title Design: the AML interpreter finished to ACPI 6.5, Load and _OSC first Design: the AML interpreter finished to ACPI 6.5, in one pull request Oct 12, 2026
@Japabu

Japabu commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator Author

Owner's rulings on M1's two questions, recorded by the orchestrator. These follow the M1 result in #875 (comment).

  1. What the _INI walk may write (S2, extending his earlier ruling on reads). AML may write exactly the SMI command port the FADT declares (SMI_CMD), which is spec-defined. The T14's _INI walk then runs before _OSC, as K2 requires. The memory write outside every range the map describes is refused by name and recorded, not admitted.
  2. The AMD bench's SSDT8, whose Scope names an EC0 no table defines. Refuse the table whole, by name; SSDT11's two calls into it fail by name too. Record it as a known firmware defect, with an owner, the evidence and an exit.

The design stands as accepted, built as this one PR covering S1–S6, in the order M1's K1–K5 set.

Japabu and others added 10 commits October 12, 2026 16:03
The owner's "finish aml then continue working on deep idle states"
(#870, comment 6119715385) puts the interpreter ahead of deep idle
states. The track now says what finished is, held to ACPI 6.5 and to
Intel's 302223-007 for a processor's _OSC, and the six slices that reach
it in order, each with its exit: Load and _OSC first, which deep idle
waits on. The design, its citations and its roast are #875's body.

The track is assigned, S1 held by #875, and its Load bullet now names
its owner.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
The owner accepted #875's design with "do the full aml in one pr", so
the six slices are no longer six pull requests.

M1, run on both benches' complete tables, fixes their order inside it.
The T14's processors' _OSC read \OSYS, which \_SB.PC00._INI writes;
forced to zero, it loses a block under CPPC. So the _STA/_INI walk runs
before _OSC. That walk writes SMI_CMD and memory outside the map, so S2's
ruling on those writes comes first.

What M1 found false in the track:
- no processor _OSC records in memory what it was passed, so the
  capabilities differential is by set, not by a value an OS recorded;
- the DSDT's one LoadTable byte pair is data inside a Buffer, not an
  opcode, so the Load bullet is S1's alone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
… firmware memory through the kernel

The owner's rulings on PR #875 (comments 6120173372 and 6121646183)
settle what a machine's AML may reach.

Reads. `toyos_userbound::firmware::decide` passes a read of memory the
firmware's map types EfiMemoryMappedIO (UEFI type 11) on exactly the terms
an unlisted register's read already passes: at or above 1 MiB, inside the
direct map, typed uncacheable by the boot processor's range registers, on
a machine none of whose CPUs holds registers that are on and differ, and
outside every page a device the kernel knows decodes in (a driven window,
any function's memory BAR, the local APIC). A write there stays refused
MemoryType. The refusal of a register read the range registers would cache
is renamed RegisterCached, since it now names a typed register too. The
bound stays address-only: the regions a machine's tables define are known
only to the holder's interpreter, which the kernel does not run.

Writes. The server asks the kernel for a byte to the FADT's SMI_CMD, read
through the same `toyos_acpi::fixed_hardware` decode the kernel declares
the port by, which the kernel makes as a firmware call or refuses by byte
and rate. Every SystemMemory write AML makes goes to the kernel, which
passes NVS and reserved memory and refuses the rest by name: a write
outside every range the firmware's map lists comes back MemoryType in
unlisted memory, is denied and counted. Configuration writes stay denied.

Checks: a host test of each arm of the MMIO read (each width, the last
byte, cached, below 1 MiB, CPUs differing, unmapped, a device's page, the
local APIC, an ECAM window typed MMIO, a read into RAM beside it); the
server's port test gains SMI_CMD at a byte and refused at a word, and a
memory-write test holds the kernel's made and refused writes and the
ledger's count.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
…ontroller under its _GLK

What OSPM runs of a machine's AML once its tables load (ACPI 6.5 §6.5.1,
§6.5.4), built before S1 because the T14's processors' _OSC read \OSYS,
which \_SB.PC00._INI writes (#875's M1, K2). In order (`init.rs`):

- `_REG(2, 1)` in each scope that declares a PCI_Config region not on a
  root bus naming a _BBN, which §6.5.4 alone makes always available: the
  kernel reads configuration space from the start, so these are announced
  before any _INI reaches them;
- \_SB._INI, unconditionally;
- every device's _STA and _INI by Table 6.67, parent before child, a
  Processor object a device; each _STA said under OWN;
- again over whatever an _INI loaded, each new _INI by the same table.

The embedded controller. The owner ruled "follow the spec" on the ECDT
(#875, comment 6120208838): the controller the ECDT names is attached to
AML before the first table loads (`toyos_acpi::ecdt`, which now reads
EC_ID's path too), and the namespace's PNP0C09 device is served in its
place once found. Its `_GLK` is honoured: 1 takes the Global Lock around
each transaction, AML's and the server's own queries alike, unless AML
already holds it; another value leaves the space unattached, said. Its
`_REG(3, 1)` runs in each scope that declares an EmbeddedControl region,
after every _INI, as the track's _REG bullet asks.

The interpreter finds a PCI root bridge that names no _BBN by its _HID
or a _CID, PNP0A03 or PNP0A08 (§6.1.5, §6.1.2), on bus 0; a region below
no host bridge is a broken rule, refused by name. Its walk entries carry
each object's place in definition order, so the server knows what a load
added (`Entry::serial`, `Interpreter::defined`), and a region's space.

Two issues close by their exits: QEMU 11.1.1's \_SB.LNKA._CRS evaluates
to a buffer on the fixture, and a controller whose _GLK is 1 is driven by
a stand-in that refuses a transaction made without the lock.

A reading for the orchestrator: on QEMU, \_SB.CPUS.Cxxx._STA writes QEMU's
CPU hotplug selector (SystemIO 0xcd8, a dword), which the server writes
for no AML, and \_SB.HPET._STA reads the HPET the kernel drives; both are
refused by name and their devices taken as absent, pinned in
`qemus_tables_load_and_s5_is_what_its_kernel_decoded`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
…gotiated

Load (ACPI 6.5 §19.6.76). `Load (Object, Result) => Boolean`, encoded
`LoadOp NameString Target`, from a SystemMemory region, a field unit of
one at whole bytes, or a Buffer, at the root, in the DSDT's integer width.
The block's header, length and checksum are checked before any of it
runs, and it must lie wholly in its source. Its bytes come through a new
host call, which the server answers from the kernel's reads only where
every read's memory type is AddressRangeReserved or AddressRangeNVS by
Table 15.6 (UEFI types 0, 5, 6, 8, 11, 12, 13 and 15 up, and 10; ACPI
reclaim, 9, is neither). A refused block (malformed, colliding, failing
its header, length or checksum, or denied by the host) loads false and
keeps nothing; a bound of the evaluation, or Fatal, refuses the
evaluation, whose steps, heap and time the block shares. Each run-time
load is told to the host, which says its signature and length, and under
OWN its OEM Table ID and the method that loaded it.

Two arenas. §5.5.2: "Global objects are those NameSpace objects created
at table load time", and a method's own objects die at its exit
(§5.5.2.3). A Load inside a method interleaves the block's nodes with the
method's, so one stack would unwind both: the namespace now keeps a static
arena, for what definition blocks define, and a method arena, each a
stack. A NodeId names its arena (the top bit of a four-byte link, so a
child map's entry is no wider), a frame defines into its own, and a
static object below a method's, or a static Alias of one, is refused. The
walk reads the static arena; the server says its slots after the
machine's last table, the track's arena bullet read rather than derived.

The cost is the design's: a method that defines names grows the method
arena's own slots where the single arena often had room. One heap test
filled within 1.3 MB of the 16 MiB bound with a method naming 20,000
objects; measured at 13.03 MB held, it now crosses the bound, so it names
15,000 below 30,000 devices for the same claim. The arena-move charge
case fills the method arena with the method's own names, since a
definition in a method no longer moves the tables' arena.

_OSC (§6.2.11; Intel 302223-007 §2.2). After the controller is armed,
\_SB._OSC under the platform-wide UUID, then, where the processor is
Intel's (CPUID leaf 0, `toyos_abi::processor_is_intel`), each Processor
object's and ACPI0007 device's _OSC under Intel's, each a query and then a
commit of what the query offered of what was asked. The claim is one
declaration a UUID, each zero with each bit's reason (`osc.rs`). The
answer is untrusted: its length must be what was passed, its status read
by name, an unasked bit dropped; a query answering failure or an
unrecognised UUID is not committed, and Capabilities Masked does not
repeat the query, since the T14 answers it to every set but one (M1).
What a commit loads is initialised by S3's walk in turn.

Checks: host tests of Load from each object, from a method and at
definition-block level, the method's own objects gone and the block's
kept, each refusal false and keeping nothing, a block below a method's
object or aliasing one refused, a bound refusing the evaluation, the
DSDT's width; and a server test in which the firmware offers every bit
and the commit sends none, the processor's commit loads a block from
reserved memory whose device's _INI then runs, a non-Intel processor's
_OSC is not evaluated, and a block in reclaim memory is refused.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
The controller's attachment is the devices module's, beside the search
that finds the controller and the query that runs its methods, so the
check outside the tree drives the server's own modules without main.rs's
claim and ports. No behaviour changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
…ableRegion, and Error::Unsupported deleted

Every address space of Table 5.182 now reaches the host (ACPI 6.5
§5.5.2.4), which says which it serves:

- by offset, an access unit at a time, as an `Address`: SystemCMOS a byte
  of the RTC/CMOS device's memory (§5.5.2.4.3); PciBarTarget by the BAR
  at the region's offset in the function's configuration space, its length
  the BAR's (§5.5.2.4.4); PCC by subspace and offset into its shared memory
  (§5.5.2.4.8); and each OEM-defined space;
- whole, as a `Transfer`, where the protocol is command- or
  connection-based: SMBus, IPMI, GeneralPurposeIO, GenericSerialBus,
  PlatformRtMechanism and FFixedHW. A field keeps the protocol its AccessAs
  names (Table 5.184; an AccessType byte's bits 7:6 name AttribBytes,
  AttribRawBytes or AttribRawProcessBytes of a count, an ExtendedAccessField
  both) and the descriptor its Connection names, inline or by name, with the
  bit its units begin at. A BufferAcc field's value is the buffer the host
  answers, and a Store to it answers the response its buffer became, as
  `BUFF = (FLD = BUFF)` reads it (§5.5.2.4.5.1, §5.5.2.4.7.1); a
  GeneralPurposeIO field's is its pins.

A reserved space, BufferAcc in a space addressed by offset, and a
BankField of a carried space break a rule, refused by name.

DataTableRegion (§19.6.25) and LoadTable (§19.6.77) find the table the
XSDT lists by signature, OEM ID and OEM Table ID through a new host call
(`toyos_acpi::find_by_id`, a shorter identifier matching a field padded
with NULs or spaces), which the server answers only where the table lies in
memory Table 15.6 calls reserved or NVS: QEMU's and most machines' tables
are in ACPI reclaim memory, and denied. LoadTable loads below its
RootPathString, stores ParameterData once loaded, and is false for no
table, a denied one, or a refused block; an identifier longer than its
field is a run-time error. Neither bench's tables use either (#875's M1).

A reference to an unnamed object handed to the caller is
`Value::Unnamed`, what it referred to; a LocalX's is gone with its method.
`0x5B 0x2A`, Unload until ACPI 6.5 reserved it, stays malformed. With that
nothing of the grammar is refused as not carried, and Error::Unsupported
is deleted.

The server serves SystemMemory, SystemIO, PCI_Config and
EmbeddedControl, and denies every other space by name.

Checks: a host test for each construct (tests/spaces.rs, tests/load.rs,
toyos-acpi's corpus); the server's denial of each space and its lookup's
memory types.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
…he SCI through a load's Sleep

GPEs (ACPI 6.5 §5.6.4). Each `\_GPE._Lxx` or `_Exx` in GPE0 is a runtime
GPE and enabled, but one the controller's (its driver serves it,
§5.6.4.1.2), one naming both triggers, and one the `_PRW` of a device
other than the power, lid and sleep buttons and the PCI host bridge names:
§5.6.4.2 keeps wake events off runtime inputs, and OSPM enables a wake
event only to arm a device's wake, which ToyOS does for none
(`gpe.rs`). On its SCI a GPE's enable is cleared, an edge's status
cleared, its method run, a level's status cleared, and its enable set
again; a method refused leaves it disabled, said by name and served no
more. The census says how many GPEs have a method, how many are runtime,
and how many wake events stay disabled.

Notifies (§5.6.6). The host keeps each Notify but a control-method
button's press, once an object and a value, and the server delivers them
after each evaluation: a battery's or adapter's 0x80 reads the power
sources again, a battery's 0x81 finds them again, `\_SB`'s or a negotiated
processor's 0x08 negotiates its `_OSC` again with the same claim
(§6.2.11), a processor's 0x80 to 0x82 is counted since nothing reads its
performance, idle or throttling states yet, and anything else is served by
nothing; each is said once.

The SCI while a table loads. An evaluation's Sleep waits on the SCI to its
deadline (`sci::await_sleep`): a press of the fixed button and the
controller's GPE are taken as they latch and handed to the server, which
serves them after the evaluation, the press powering the machine off once
the load has handed `\_S5` over; anything else keeps its status and loses
its enable until the Sleep ends. That meets the exit of the track's bullet
on a press during the load, which waited out the load's sleeps.

`acpi_press_across_a_lock_wait`'s table waited for the press in its load
by `While (!PBST) { Sleep (1) }`, reading PM1 status directly, which
§5.5.2.4.1 forbids AML; a Sleep now takes that press, so the fixture waits
by Stall, which keeps the processor and serves nothing. What the test
holds, a press latched across the Global Lock's wait, is unchanged.

Checks: host tests of the GPE census and handling, a refused method's GPE
disabled, each Notify's delivery, what a Sleep took served after it, and
the Sleep's wait taking a press and the controller's GPE and leaving the
rest latched.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
… the longest wait, the firmware's longest hold

The heap. The interpreter states what one load or evaluation holds while
it runs, `MAX_RUNNING`: `MAX_LIVE` and what a run holds beyond the
meter's count, each part bounded by another bound of the interpreter and
named at the constant (an arena's old slots while it doubles, one
operator's bytes before the meter holds them, a table's while it is read
in, each frame's slots, name and PCI walk, each Mutex held, a node's path).
Mutexes held were bounded only by the steps, about 4.5 MiB of records:
an evaluation now holds at most 256 acquisitions at once, refused at the
bound as nesting is. Every hostile fill of `tests/heap.rs`, by loads and by
methods, holds its peak under the counting allocator to `MAX_RUNNING`. The
server says both bounds beside what the interpreter holds after the
machine's last table, and the static arena's slots.

The ten-second wait. The census says the longest wait an evaluation of
the initialisation asked, refused or not (`Usage::waited_us`), the
reading the track's bullet asks of the T14.

The Global Lock. The host measures how long a take waited for the
firmware's release, the firmware's longest hold as a take saw it, and the
load's line says it beside the contended count, the reading the track's
bullet sets the bound by.

What a full interpreter does is a design the accepted one does not hold,
and is proposed on the pull request rather than built here.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
…eads S1, S3 and S5 on the machine

`acpi_tables_loaded` now judges the bench whose ACPI row the kernel names,
by that bench's expectations (`Bench` in tests/toyos.rs): the T14's 14
blocks, the AMD bench's 17 with SSDT8 refused for the name its `Scope`
does not resolve, as the owner ruled, and each `\_S5`. No row names its
hardware yet, so one row that reads either bench as itself costs no red on
the other.

On either bench it reads what #875 built: the namespace initialised with
every `_INI` run and none refused but by the owner's ruling on a write
outside every range the map lists, and `_REG(3, 1)` after them;
`\_SB._OSC` negotiated, and on the T14 each processor's, none refused; the
blocks ToyOS's claims load, by signature and length, the T14's one of 459
bytes as the check outside the tree read it; and it prints the census, the
GPEs enabled, the longest wait asked, the firmware's longest hold of the
Global Lock, the interpreter's heap and the namespace's slots.
`acpi_server_events`, on the held boot, reds on a runtime GPE whose method
was refused and prints each GPE served.

The issues: the track says what the build met and what each stage still
waits on, its `_REG` bullet and the press's wait gone with their exits
met; the AMD bench's SSDT8 is recorded as the firmware defect the owner
ruled it, with its evidence and an exit; and the AMD bench's
memory-mapped I/O issue records the rulings that bring its exit to 16 of
17 tables.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
Japabu and others added 3 commits October 13, 2026 02:50
…ed does

The T14's round-4 boot at ddc243e read battery_read red on "a SystemMemory
write the kernel refused MemoryType, in unlisted firmware memory": the
refusal the owner ruled on #875 (a memory write outside every range the map
describes is refused by name and recorded, not admitted), the one the T14
bench's `ruled` names, and the one acpi_tables_loaded held met on the same
boot. battery_on_metal kept its own refusal filter and never consulted the
bench's; it now does, so any other refusal still reds it.

The write, from the T14's own tables run on the host and read by hand: the
embedded controller's _INI calls its hotkey device's wireless set-up, which
on a flag the firmware's SMI answers drives one GPIO pad's TX state to 1
through the tables' own PCR helper. It is one byte, 0x01, at SBREG_BAR +
Port ID 0x6E + 0xA70: PAD_CFG_DW0 of GPP_A13 in GPIO Community 0, bit 0
GPIOTXSTATE (Intel 500 Series Chipset On-Package PCH datasheet vol. 2,
631120-002, section 27.1.114), inside a 64 KiB window the GPIO controller
(INT34C5) lists in its _CRS, and in no range of the firmware's memory map.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
…utside the map

The cost of the owner's ruling on the T14, recorded as the AMD bench's is:
the controller's _INI stops at a GPIO pad's TX state in the PCH's GPIO
Community 0 (a window the GPIO controller's _CRS lists and the firmware's map
does not), read on the T14 at ddc243e and reproduced on the host by the
T14's own tables; the hotkey device's _INI stops at a write the T14's log
does not detail, which the host run puts in the processor's MCHBAR. The T14
bench's doc points at it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
Japabu added a commit that referenced this pull request Oct 13, 2026
…ed does

The T14's round-4 boot at 639ce13 read battery_read red on "a SystemMemory
write the kernel refused MemoryType, in unlisted firmware memory": the
refusal the owner ruled on #875 (a memory write outside every range the map
describes is refused by name and recorded, not admitted), the one the T14
bench's `ruled` names, and the one acpi_tables_loaded held met on the same
boot. battery_on_metal kept its own refusal filter and never consulted the
bench's; it now does, so any other refusal still reds it.

The write, from the T14's own tables run on the host and read by hand: the
embedded controller's _INI calls its hotkey device's wireless set-up, which
on a flag the firmware's SMI answers drives one GPIO pad's TX state to 1
through the tables' own PCR helper. It is one byte, 0x01, at SBREG_BAR +
Port ID 0x6E + 0xA70: PAD_CFG_DW0 of GPP_A13 in GPIO Community 0, bit 0
GPIOTXSTATE (Intel 500 Series Chipset On-Package PCH datasheet vol. 2,
631120-002, section 27.1.114), inside a 64 KiB window the GPIO controller
(INT34C5) lists in its _CRS, and in no range of the firmware's memory map.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
@Japabu

Japabu commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator Author

Ruling on the GPIO pad write (\_SB.SGOV → PAD_CFG_DW0_GPPC_A_13 at 0xFD6E0A70, from EC._INI via HKEY.WGIN). It stays refused, under the same ruling: a write outside the firmware's map reaches a device another driver may own, here the GPIO community, so isolation decides. The same holds for HKEY._INI's MCHBAR write. The cost issue records both, and the T14 bench expects both by name.

@Japabu

Japabu commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator Author

Metal, run by the orchestrator. Round 4 at 639ce1374 on the AMD bench: acpi_tables_loaded judge exit 0. Round 5 at a99fa7c32 on the T14: acpi_tables_loaded acpi_server_events battery_read, judge exit 0, 3 passed, 0 failed. Readbacks are under agents/875-r4/metal/amd/ and agents/875-r5/metal/t14/.

@Japabu

Japabu commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator Author

Review, round 5, at a99fa7c32, against .claude/agents/reviewer.md on origin/main. The base is the merge-base b805e6154. origin/main is now at 347e3313d, and the head merges into it without conflicts (git merge-tree).

None of the PR's 20 comments is an earlier review, so each earlier ruling is judged against this head instead:

  • 6120173372, MMIO reads: CLOSED. firmware::decide passes an EfiMemoryMappedIO read on a register's terms, each arm has a host test, and round 4's AMD boot read 16 of 17.
  • 6120208838, the design: CLOSED. No _PDC is evaluated, and osc.rs claims 0. Round 5's T14 log reads "24 evaluated … granted 0x0 of 0x0".
  • 6121646183, SMI_CMD, the unmapped write refused and recorded, SSDT8 refused whole: CLOSED. The issue for SSDT8 has an owner, evidence and an exit.
  • 6126449763 and 6130332818: CLOSED as 6131125468 supersedes them.
    • PROTECTED is the ELCR alone, citing Intel 332691-003, and the PIT is off it.
    • Out of memory is re-cited to §5.5.2.3 and §19.6.88.
    • A controller read before its _REG is re-cited to §6.5.4.
  • 6131125468: CLOSED.
    • AMD.ruled holds ConfigWrite, and its issue carries the cost and an exit.
    • SSDT8 is as ruled.
    • acpi_hold waits on POWER_SOURCES, and the judge cuts the log at that line.
    • git grep -i acpica at the head finds nothing. No line the diff adds to source, a test or a manifest names Linux.
  • 6135767889, the GPIO pad write: OPEN. Both writes stay refused, and the cost issue records both. But the T14 bench does not expect them by name (BLOCKER 1).
  • 6135803137, the metal runs: OPEN as evidence (BLOCKER 2). The booted images do hash to the staged ones (f1bea98… AMD, f187cec… T14).

BLOCKER

  1. tests/toyos.rs:5962, 6043–6062, 6130 — The T14 bench holds its ruled refusal by kind, not as the two _INIs by name. 6135767889 asks for them by name, and as written the judges cannot fail on the claim:

    • acpi_tables_on_metal drops every line that carries the kind string, the OWN line of any path included. Its census check passes x2 or x9 alike.
    • battery_on_metal drops that kind everywhere, a _BST refused MemoryType included.
    • The fix: hold \_SB_.PC00.LPCB.EC__._INI and …EC__.HKEY._INI by path and the census at x2, and filter battery_read by the same two paths.
    • Mutant the implementer runs: the fixed judge on a copy of round 5's T14 readback whose log has a third MemoryType refusal of another path, or the HKEY._INI line's path changed. It must turn acpi_tables_loaded red, and a _BST refused MemoryType must turn battery_read red. At this head both stay green.
  2. PR body, Metal; evidence repository at 88b02ea — The hardware readings this change targets are in no log the body links. Missing:

    • round 5's T14 boot at a99fa7c32: judge EXIT=0, 3 passed;
    • round 4's AMD boot at 639ce1374: acpi_tables_loaded green.

    The repository holds only round5/gates/judge-r4-readback.log, which is round 4's T14 readback judged again. Comment 6135803137 points at a local scratch path instead. Publish both judge logs, masked (each carries a machine's vendor, product and BIOS line), and cite them, with command, exit and head, under Metal.

  3. tests/common/power.rs:860, tests/toyos.rs:399, 3922 — acpi_press_across_a_lock_wait is refused under Tests (Integration between modules is tested only for the kernel, and an integration test outside it is cut #890), and this branch changes it (855eff969). It boots QEMU, launches acpiserver, presses the button and judges the order of the server's main. That is an integration test of a userspace program.

    • The body says no cheaper tier reaches it, but a cheaper tier does. Server<K: Kernel, P: Ports> over host::tests::Scripted can already script each part:
      • a Sleep's latched press (sleeps);
      • the firmware's hold (takes: [Pending], with releases running out to the deadline);
      • a table with \_SB.GLI._INI.
    • sci::await_release's handling of the enables is already held by sci.rs's host tests.
    • The fix: cut the test, and move main.rs:155–160's order (served_aml, latched, initialise) into a generic Server method. Then a module test holds the claim: a press latched during the load powers off before an _INI that waits on the firmware's hold.
    • Name that test in the body. The existing mutant, "initialise before the latched press", must turn it red.

NOTE

  • tests/toyos.rs:6057 — The judge prints every ruled line to its log, including the server's OWN lines ("this machine's own, quoted in no record", system/acpiserver/src/host.rs:99). The published round5/gates/judge-r4-readback.log carries two of them (lines 24–25). Leave OWN lines out of what the judge prints when fixing BLOCKER 1.

  • issues/toyos-runs-the-machine-in-acpi-mode-and-interprets-its-aml.md:471, 474, 504 — The track's finish and S3's exit cannot be met.

  • issues/the-t14s-controller-and-hotkey-ini-are-refused-for-writes-outside-the-map.md:16 — This issue records only the earlier ruling. It does not record 6135767889: isolation decides, for the GPIO community and for MCHBAR. The AMD issue does record 6131125468.

  • issues/acpiserver-refuses-the-amd-benchs-dsdt-for-a-read-in-memory-mapped-io.md:51 — The branch adds a "Ruled" paragraph to an issue it does not take up. Round 4's AMD boot meets that issue's exit (16 of 17 loaded, \_S5 handed). Once that boot's log is published (BLOCKER 2), delete the file, with the evidence in the commit message.

  • Commits bae9ad977, 8ad7a6e38, 8f7c4a42b, 0e7c92cd8, 855eff969 — Their messages cite another implementation's source as the design's authority:

    • ACPICA 20260408 (AcpiProtectedPorts, its AE_NO_MEMORY path, its walk);
    • Linux's acpi_os_write_port.

    They land on main with the merge. The tree is clean of them; this record is not. Reword them before landing, or the orchestrator rules commit messages outside Another implementation's source is read only clean-room, and the tree names Linux only as a host platform or a libc interface #902.

  • The PR body (prose): Metal has no round 5 result, and Unsure still calls the GPIO ruling open.

Growth (git diff --shortstat origin/main...a99fa7c32): 46 files changed, 4,627 insertions(+), 648 deletions(-).

added removed
production (with its in-file unit tests) 3,159 423
test files 1,181 97
issues 287 128

Round 5 changes no production code: against 639ce1374 the head differs only in tests/toyos.rs and issues/. So the guest suite and images at 639ce1374 still stand.

SEND BACK

@Japabu

Japabu commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator Author

Ruling on the commit messages (round 5 NOTE): commit messages are main's record, so #902 covers them. The five commits are reworded before landing so that none cites ACPICA or Linux as the design's authority. The branch is the implementer's to rewrite. All the other findings are taken as the review writes them.

Japabu and others added 4 commits October 13, 2026 03:15
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
Round 5's review of #875: the T14 judges excused every line that carried
the ruled kind, so acpi_tables_loaded passed a third MemoryType refusal
of any path and a census of x2 or x9 alike, and battery_read passed a
_BST refused MemoryType. A bench's ruled refusal is now a Ruled: its
kind, each line the server says of it by kind, each evaluation it
refuses by the path the server says under OWN, and the census's count
of it, exactly. Every line carrying the kind but the census is one of
those, and each of those is there. battery_read holds the T14's the
same way. The judge prints the ruled lines that say a kind, and none
of the server's OWN lines.

OWN moves to acpiserver-api, which the judge now reads it through.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
…in Server::loaded, and acpi_press_across_a_lock_wait is cut

Round 5's review of #875: acpi_press_across_a_lock_wait booted QEMU,
launched acpiserver, pressed the button and judged the order of the
server's main, an integration test of a userspace program, which
reviewer.md's Tests refuses (#890). A module test holds the claim
instead.

main's order, the load's sleep type and namespace taken, what a Sleep
latched during the load served, the SCIs already latched served, then
the namespace initialised, moves into Server::loaded, generic over the
Kernel. For that, the claim's SCI record, its acknowledgement and the
power-off asked of the supervisor are Kernel's: Claim answers them as
main did, serve reads the SCI through the same latched, and Scripted
answers no SCI and panics with POWERED_OFF where it is asked to power
off, as a stop that happens takes the process with it.

a_press_latched_during_the_load_powers_off_before_an_ini_that_waits_on_the_firmware:
a DSDT whose Sleep takes a press as it loads, and whose \_SB.GLI._INI
Acquires \_GL with no bound while the firmware holds it (takes:
[Pending], no release), is loaded and handed to Server::loaded; the
machine powers off and the take is never asked. Initialising before the
latched press reds it: the _INI's take finds the firmware holding the
lock past RELEASE.

The cut takes what only that test used: acpi_mediated's held arm,
BootOptions::acpi_tables and its -acpitable plumbing, and the count
acpi_tables_loaded answered.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
…the GPIO and MCHBAR ruling; the AMD bench's MMIO read is closed

Round 5's review of #875.

The track's finish and S3's exit asked every block loaded and no method
refused on both benches, and readings equal to Linux's: the first is
false under the owner's rulings (SSDT8, the AMD bench's ConfigWrite, the
T14's two _INIs), and a reading under another OS is evidence, never an
exit's oracle (#902). Both now state the ruled state, ACPI 6.5 deciding.

The T14 issue records the owner's ruling on #875 (comment 6135767889):
the GPIO pad write and the MCHBAR write stay refused, isolation
deciding, and the row expects both _INIs by path.

acpiserver-refuses-the-amd-benchs-dsdt-for-a-read-in-memory-mapped-io.md
is closed: its exit is met. The policy was ruled (comment 6120173372),
firmware::decide holds it with a host test of each arm, and the AMD
bench's boot at ddc243e (639ce13 before round 6's reword, the same
tree) read 16 of 17 tables loaded, SSDT8 the one refused as ruled, and
\_S5 handed, SLP_TYPa=5: acpi_tables_loaded passed, judge exit 0
(https://github.com/ToyOSOrg/evidence/blob/063f2e24002d1f506a59c4440f6da9b300753f7a/round6/metal/amd-judge.log,
and judged again at 5352b09 in round6/judge/fixed-amd.log, exit 0).

Two issues name the branch's commits by their hashes after the reword.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
@Japabu

Japabu commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator Author

T14 at 17c2cb89a, run by the orchestrator from agents/875-r6/metal/t14/request.txt: judge cargo test --test toyos-build -- --metal --metal-readback <dir> acpi_tables_loaded acpi_server_events battery_read, exit 0, 3 passed, 0 failed, 1 boot. The readback is under agents/875-r6/metal/t14/.

@Japabu

Japabu commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator Author

Review, round 6, at 17c2cb89a, against .claude/agents/reviewer.md on origin/main (1d5325376). The base is 347e3313d. main has moved only in issues/ since then, and the head merges into it without conflicts (git merge-tree, exit 0).

The reword. I paired the 32 commits of b805e6154..a99fa7c32 with bf6a51068 and its ancestors on the branch, in order. Their tree hashes are equal one for one (diff of the two lists: empty), and so are the merges' second parents. Seven old messages named ACPICA or Linux: bae9ad977, 8ad7a6e38, 8f7c4a42b, 0e7c92cd8, 855eff969, dcad10931 and 30fad01e4. No message of origin/main..17c2cb89a cites either as authority. The only hit is 17c2cb89a's "readings equal to Linux's", which names the exit that commit removes. No line the diff adds to source, a test or a manifest names ACPICA or Linux, and git grep -i acpica 17c2cb89a finds only acpicase.

Round 5's BLOCKERs

  1. The T14 bench held by kind: CLOSED. Ruled holds each said line, each path under OWN, and the census whole. On round 5's T14 readback, the round-6 evidence at 063f2e2, round6/judge/exits.txt:
    • the fixed judge is green (fixed-t14 EXIT=0, fixed-amd EXIT=0);
    • the third-path, path-changed, x9 and _BST mutants red it (EXIT=1 each);
    • with the fix reverted, all four are green (EXIT=0);
    • the T14 boot at this head prints no OWN line (judge-head.log).
  2. Round 5's and round 4's metal unpublished: CLOSED. round6/metal/t14-judge.log and amd-judge.log are masked and cited under Metal with command, exit, head and image hash.
  3. acpi_press_across_a_lock_wait: CLOSED.
    • The test is cut, and so is what only it used.
    • Server::loaded holds the order.
    • a_press_latched_during_the_load_powers_off_before_an_ini_that_waits_on_the_firmware is named in the body.
    • The mutant "initialise first" turns it red: round6/mutants/initialise-first.log, EXIT=101, 80 passed and 1 failed, with the tree clean after (restored clean=0).
    • The guest suite at 17c2cb89a is EXIT=0, 61 of 61, acpi_mediated_access among them.

Round 5's NOTEs: OWN left out of what the judge prints, closed. T14 issue records 6135767889, closed. The AMD MMIO issue deleted, closed: its exit is met as ruled, and git grep finds no citation of its slug at the head. Commit messages, closed (above). Body prose, closed. The track's finish, partly open (NOTE below).

Must the AMD bench boot at this head? No.

  • The branch's delta in each production path but two is patch-identical (git patch-id) at ddc243eaf, where the AMD bench booted, and at 17c2cb89a:
    • kernel/src/arch/x86_64/acpi_mode.rs;
    • lib/acpi/src, lib/userbound/src, sdk/abi/src;
    • system/acpiserver/aml/src;
    • acpi_hold.rs and acpi_counted.rs.
  • The two that differ are system/acpiserver/src and lib/acpiserver-api/src. Their round-6 delta is the order moved into Server::loaded unchanged, Claim's latched/ack/power_off with the bodies main and serve had, and OWN moved. None of it branches on the machine.
  • The T14 at this head runs each changed line metal reaches: loaded, served_aml, and latched in loaded and in serve (29 SCIs, 0x4f x13). No metal row reaches power_off.
  • The AMD row's new judge holds on round 4's AMD readback (fixed-amd EXIT=0).

BLOCKER

  1. PR body, Metal — The T14 boot at this head is in no log the body cites. It is the reading this round's production change needs. Comment 6136212341 gives a local scratch path, and the body stops at "Round 6's request". The readback I read says:

    • judge-head.log: 3 passed, 0 failed, 1 boot;
    • verdict.txt: passed;
    • testcases/image.img: 7aa7fb2a…0123, the staged hash.

    What is needed:

    • Publish judge-head.log masked, since its timings line names the machine's vendor, product and BIOS, as amd-judge.log masks them.
    • Record its EXIT=0, since the log carries none.
    • Under Metal, cite the command cargo test --test toyos-build -- --metal --metal-readback <dir>/t14 acpi_tables_loaded acpi_server_events battery_read, head 17c2cb89a, EXIT=0, 3 passed, and the readback's image equal to the staged 7aa7fb2….

NOTE

  • issues/toyos-runs-the-machine-in-acpi-mode-and-interprets-its-aml.md:480–481 — The finish cannot be met on the AMD bench under the rulings: "each battery reading is read whole … with no value unknown". The AMD bench's ruled _PSR refusal makes its battery line end AC unknown: round3/amd-acpi_tables_loaded.log:487, and BATTERY_READ carries the adapters' state. The rewrite also drops _CST from the finish without saying where it went. State the AMD adapter's ruled unknown, and either keep _CST with ACPI 6.5 §8.4.1 as the oracle or name what holds it (Design: idle CPUs enter the deep idle states the firmware declares #870).
  • PR body, Metal — Say why the AMD bench is not booted at 17c2cb89a: the patch-identical delta and the machine-independent round-6 change above. Without it the reader cannot tell a choice from an omission.

Growth (git diff --shortstat origin/main...17c2cb89a): 47 files changed, 4,751 insertions(+), 893 deletions(-).

added removed
production (with its in-file unit tests) 3,244 438
test files 1,220 278
issues 287 177

Round 6 alone (a3dad3629..17c2cb89a): production 103 and 33, the module test 29 of those added; tests 72 and 214; issues 24 and 73. The production growth is the generic Server::loaded and three Kernel methods that both implementations use. It deletes the duplicated SCI read in serve, and with it a guest test, its SSDT builder and the -acpitable plumbing. Accepted.

SEND BACK

… names what reads _CST

The finish asked every battery reading with no value unknown, which the
AMD bench cannot meet under the ruling on its _PSR: its adapter reads
`AC unknown`. It now states that exception. `_CST` left the finish in the
previous commit without a word on where it went: no part of this track
reads it, and the deep idle states track does (#870).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
@Japabu

Japabu commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator Author

Review, round 7, at a785962f4, against .claude/agents/reviewer.md on origin/main (1d5325376). 17c2cb89a..a785962f4 is one commit. It changes only issues/toyos-runs-the-machine-in-acpi-mode-and-interprets-its-aml.md, 6 lines added and 1 removed. The head merges into origin/main without conflicts (git merge-tree --write-tree, exit 0). Every production path, test and manifest is byte-identical to 17c2cb89a, so the guest suite and the T14 boot at that head still stand for this one.

Round 6's BLOCKER

  1. The T14 boot at 17c2cb89a was unpublished: CLOSED. The evidence is at 3c85c71b4.
    • round7/metal/t14-judge-head.log is masked: its timings line reads <a bench>, and no vendor, product or BIOS string is left. No OWN line is printed. It ends 3 passed, 0 failed, 1 boot(s) with PASS for acpi_server_events, acpi_tables_loaded and battery_read.
    • t14-judge-head.exit.txt gives:
      • the command cargo test --test toyos-build -- --metal --metal-readback <dir>/t14 acpi_tables_loaded acpi_server_events battery_read;
      • head 17c2cb89ae5f…;
      • EXIT=0, labelled as the orchestrator's record, which matches comment 6136212341;
      • verdict.txt: passed;
      • the readback's image hash 7aa7fb2a…0123, equal to the staged one in round6/gates/metal-images.sha256.
    • The body's Metal section cites both files with that command, head, exit and count. What it says the T14 read matches the log line for line:
      • 14 of 14 tables loaded, and SLP_TYPa=7;
      • 24 _OSC evaluated, 0 refused;
      • 1 table loaded at run time, 0 refused;
      • 12 _STA and 37 _INI;
      • MemoryType x2;
      • 7 runtime GPEs;
      • the battery at 98%, AC online;
      • 29 SCIs and 0x4f x13.

Round 6's NOTEs

  • The finish under the rulings: CLOSED.
    • The finish at lines 480–483 now excepts the AMD bench's adapter, which reads AC unknown because of the ruled _PSR refusal.
    • _CST is listed under "Not in finished" with what will read it: issues/idle-cpus-enter-the-c-states-cst-names.md, which exists at the head, and Design: idle CPUs enter the deep idle states the firmware declares #870, an open pull request.
    • "No part of this track reads _CST" holds: git grep _CST a785962f4 -- system lib kernel sdk finds only the FADT's CST_CNT field and osc.rs:70's "reads no _CST".
  • Why the AMD bench was not booted: CLOSED. The body's Metal section now gives the reason: the delta is patch-identical in every production path but two, the round-6 change does not depend on the machine, and the new judge passes on round 4's AMD readback.

Since 17c2cb89a

  • The only change is an edit to the issue this branch takes up, which the round-6 NOTE asked for. It adds no citation that points at nothing.
  • Host suite at a785962f4, evidence at e6b051dec, round7/gates/ci-host.log:
    • the run starts at 01:45:28 UTC, after the head was committed at 01:45:25 UTC;
    • it ends Host: 76 step(s), all green and EXIT=0;
    • its FAILED lines all fall under === [ci] control … sections, each ending "verdict(s) reached". These are the negative controls going red as they should.

No new finding.

Growth (git diff --shortstat origin/main...a785962f4): 47 files changed, 4,756 insertions(+), 893 deletions(-). Round 7 alone: issues +6 −1, and no production or test lines. The production growth was accepted in round 6.

LAND

@Japabu
Japabu marked this pull request as ready for review October 13, 2026 01:50
@Japabu
Japabu added this pull request to the merge queue Oct 13, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Oct 13, 2026
#893 cut acpi_power_button and acpi_press_across_a_lock_wait and replaced
the latter's held arm with acpi_press_is_one_sci's press arm; this branch
had cut acpi_press_across_a_lock_wait too. The conflicts take main's side
in tests/common/qemu.rs (both sides dropped acpi_tables; main also drops
second_slot), tests/guest/rust-tests/src/bin/acpi_mediated.rs (the press
arm; this branch's RegisterCached rename auto-merges) and tests/toyos.rs's
RUST_SKIP comment. In tests/common/power.rs acpi_power_button goes with
main, which leaves power::acpi_tables_loaded with no caller, since this
branch's acpi_tables_on_metal reads each bench's blocks itself: it goes,
with ACPI_TABLE, ACPI_S5_HANDED and slp_typ_a.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
@Japabu

Japabu commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator Author

T14 at c7f81824d (the merge of 858da4d42), run by the orchestrator from agents/875-merge/metal/t14/request.txt: judge cargo test --test toyos-build -- --metal --metal-readback <dir> acpi_tables_loaded acpi_server_events battery_read, exit 0, 3 passed, 0 failed, 1 boot.

@Japabu

Japabu commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator Author

Review of the merge c7f81824d (a785962f4 + origin/main 858da4d42, merge base 347e3313d), against .claude/agents/reviewer.md. Round 7's LAND at a785962f4 had no open BLOCKER.

Conflict accounting. Six files changed on both sides: tests/common/power.rs, tests/common/qemu.rs, tests/guest/rust-tests/Cargo.toml, tests/guest/rust-tests/src/bin/acpi_mediated.rs, tests/toyos.rs, and the track's issue. For each, I compared the branch's own change (git diff -U0 347e3313d a785962f4) with what the merge applies on top of main (git diff -U0 858da4d42 c7f81824d), line for line.

  • Cargo.toml, acpi_mediated.rs (both RegisterCached hunks are present at lines 254 and 271) and the issue: identical. The issue's other +20 lines vs a785962f4 are Integration tests outside the kernel are cut, and unit and module tests hold what they checked #893's.
  • qemu.rs: equal to main's file. The branch's whole change is a subset of main's: the acpi_tables field, its default, write, -acpitable arg and acpi_table fn.
  • toyos.rs: identical except for two kinds of hunk. (1) The branch's acpi_press_across_a_lock_wait skip entry and dispatch line, which main had already cut. (2) The RUST_SKIP comment on acpi_mediated. Main's text there, naming acpi_press_is_one_sci, is correct at the head: that test exists (tests/toyos.rs:1959, dispatch at 3388).
  • power.rs: the branch's acpi_press_across_a_lock_wait, its SSDT builder, Q35_PM1A_EVENTS, ACQUIRE_MS, ACQUIRE_TIMED_OUT, ONE_TAKE_CONTENDED and hex_after are gone, as main had them. Against main, the merge removes only ACPI_TABLE, ACPI_S5_HANDED, slp_typ_a and acpi_tables_loaded (git diff 858da4d42 c7f81824d -- tests/common/power.rs, −40).
  • git grep at the head finds no UnlistedCached, acpi_mediated_held, ssdt_acquiring, acpi_tables:, ACPI_PRESSED or acpi_power_button.

The four deletions are dead.

  • At the base, power::acpi_tables_loaded had three callers: acpi_power_button (power.rs:758), acpi_press_across_a_lock_wait (power.rs:885) and the T14 judge (tests/toyos.rs:5961).
  • At a785962f4 the branch had removed the second and third. acpi_tables_on_metal reads the blocks itself, and that was reviewed in earlier rounds.
  • Integration tests outside the kernel are cut, and unit and module tests hold what they checked #893 removed the first.
  • At the head, git grep 'acpi_tables_loaded(' c7f81824d finds no call. The remaining hits are the metal row's name (tests/toyos.rs:512) and a comment naming that row (:156).
  • ACPI_TABLE, ACPI_S5_HANDED and slp_typ_a have no reference left outside the slp_typ_a ABI parameter names in sdk/ and system/acpiserver, which are unrelated.
  • ACPI_ARMED stays and is read at power.rs:185.

Evidence at c7f81824d (evidence repo 1cf2910ce, merge-858da4d42/):

  • The commit was made at 03:27:11 UTC. The guest log starts at 03:27:18 and the host log at 03:31:10, both after it.
  • Host: exits.txt host: EXIT=0, and host.log ends Host: 76 step(s), all green. Its FAILED lines (8316–8389) fall inside === [ci] control … sections that each end "verdict(s) reached".
  • Guest: guest: EXIT=0, and guest.log:446 reads 52 passed, 52 total. That includes PASS for acpi_mediated_access, acpi_press_is_one_sci, acpi_lock_given_back_on_one_cpu, acpi_supply_outlives_holder and the four machine_shutdown_*.
  • The round-1 red (EXIT=1) and its cause, the dropped RegisterCached hunks, are recorded, and the fix is in the head.
  • Build: EXIT=0. Metal staging: EXIT=2, with image b54a97da…ce48.

Growth against main after the merge (git diff --stat 858da4d42 c7f81824d): 46 files, +4,750 −747. The merge itself adds nothing against either parent. It only deletes 40 lines of test code that the merge left without a caller. Accepted.

BLOCKER

  • PR body, "The merge of main's 858da4d42" / Metal — The T14 reading at c7f81824d is not in the body. The merge changes the image the three T14 rows boot: testcases.toml, and every std program rebuilt on Integration tests outside the kernel are cut, and unit and module tests hold what they checked #893's sdk/std changes. The body itself says so and stages the rows again. Only the orchestrator's comment records the run: a command, exit 0, and 3 passed, 0 failed, 1 boot. It cites no log and does not say whether the readback's image matches the staged b54a97da…ce48. Round 6 sent the branch back for exactly this. Publish the judge log masked, with its exit, verdict.txt and the readback image's hash. Then cite them in the body's merge section with the command, the head c7f81824d, EXIT=0 and 3 passed.

NOTE

SEND BACK

@Japabu

Japabu commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator Author

Re-review of the merge c7f81824d, judged on the body and on evidence ToyOSOrg/evidence pr-875 at ec25d2509 (branch tip; its one parent is 1cf2910ce; it adds only merge-858da4d42/metal-t14/{exit.txt,judge-head.log,verdict.txt}). The PR head is still c7f81824d.

Earlier BLOCKER

  • PR body, merge section: no cited T14 reading at c7f81824d. CLOSED.
    • The new row cites judge-head.log, verdict.txt and exit.txt at ec25d2509. All three links resolve to the published files.
    • exit.txt gives the command (cargo test --test toyos-build -- --metal --metal-readback <dir>/t14 acpi_tables_loaded acpi_server_events battery_read), the head c7f81824d, EXIT=0, and the readback image's sha256 b54a97daaeeba1fe0ce773b7346d0ce890379f5da69b2aad8f7e728134afce48.
    • That hash is byte-for-byte the staged one in merge-858da4d42/metal-images.sha256 at 1cf2910ce, and the row's b54a97da…ce48 names it.
    • verdict.txt reads passed.
    • The judge log ends [metal] 3 passed, 0 failed, 1 boot(s). It shows PASS for acpi_server_events, acpi_tables_loaded and battery_read, which matches the row's "3 passed, 0 failed, 1 boot".
    • The judge ran at 03:40:24–29 UTC and the boot's records are stamped 03:39:12–43. Both come after the head commit's 03:27:11.
    • The log's content is consistent with the rulings and earlier rounds: 14 of 14 tables, \_S5 SLP_TYPa=7, 24 processor _OSCs with 0 refused, 12 _STA, 37 _INI, the two ruled MemoryType refusals x2, _REG(3, 1) in 1 scope, 1 run-time table with 0 refused, 7 runtime GPEs, battery 98% with AC online, and query 0x4f.
    • Masking. The bench reads <a bench>, and the paths are <dir> or relative to the repository. A search of the three files for the shapes build/sourcegate.rs refuses found none: no MAC, IPv4/IPv6 address, serial number, hostname, /Users or /home.

The earlier NOTE (the power.rs bullet) is taken: the body now says main's side kept acpi_tables_loaded for its T14 judge, which this branch rewrote.

BLOCKER

None.

NOTE

  • PR body, merge table, "metal, T14" row — the command is given as "the same" as the staging row (--metal-readback <dir>), but exit.txt records --metal-readback <dir>/t14. The log carries no exit of its own: EXIT=0 is the orchestrator's record (exit.txt: "EXIT=0 (orchestrator runner)"), which round 6's row said and this row does not. The image hash ties the readback to the staged image, so this is prose, for the orchestrator.

LAND

@Japabu
Japabu added this pull request to the merge queue Oct 13, 2026
Merged via the queue into main with commit 1b080a3 Oct 13, 2026
3 checks passed
@Japabu
Japabu deleted the wt/toyos-aml branch October 13, 2026 04:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant