Repository navigation
Conversation
…s and the state of the art, and their figures are reported The owner ruled that a design follows its hardware's manufacturers and the published state of the art, and that our bench reports what a design gains and never blocks it (#885, the owner's answers recorded on it). The speed track still judged each design round by a kill condition fixed before the run, and its stages carried kill lines, twins whose gain decided whether a design was built, and exits that let a measured loss or a measured cost reject a change. The track now says what a stage cites and how its figure is used: where the manufacturers or the published state of the art back a stage, its figure is reported and never blocks it, and a slowdown or a gap to Linux is filed as a defect and investigated; a stage they do not cover is reviewed on its correctness and simplicity, and its figure decides only where speed is its only purpose. Each stage that carried a kill line drops it and cites what backs it: - the syscall's FP save and the preempt count's `lock`: SDM 325462-093 Vol. 3A §16.4 and §7.6, AMD APM 24593 rev. 3.42 Vol. 2 §2.5.12; the exit's escape for a change kept on its measured cost goes; - a wake to a busy CPU: Lozi et al., EuroSys 2016, on the work-conserving invariant; - per-CPU lines: Intel's optimization manual 248966-051 Vol. 1 §11.4.5, Coding Rule 17; the exit's escape on a measured cost goes, and the attribution is read again after the change; - the MWAIT doorbell: SDM Vol. 3A §11.10.4, §11.10.5 and §11.10.6.4, and the optimization manual §11.4; the twin and its 20 % line go, and the exit reads the split again after the change; - the TSC deadline: SDM Vol. 3A §13.5.4.1; the twin, its 5 % line and the `rejected` outcome go, and timer lateness is read with both timers, no longer held to the count's. FSGSBASE's exit let a pipe round-trip loss reject it. Intel's Guidance for Enabling FSGSBASE (ID 767615) names what it gives and how an OS takes it, so the stage is now `issues/fsgsbase-is-taken.md` and the figure is read with and without it. The track's global-pages bullet existed to set up a PGE twin; it goes, and the decision stays `issues/page-global-is-a-decision-nobody-has-made.md`'s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
|
Round 1, head Net lines ( Evidence: Sources: I fetched each file and hashed it against Asked by the brief
Collisions with open pull requests (not findings)
BLOCKER
NOTE
SEND BACK |
|
The orchestrator, on the BLOCKER (the TSC-deadline stage), applying the owner's standing ruling (#885: a design its manufacturers or the published state of the art back is followed, and its figure is reported; a design nothing published covers is reviewed on merits, and speed decides only when it is the whole purpose). The SDM documents the TSC-deadline mode without recommending it, AMD documents none, and the issue names no purpose but speed. So this stage is the owner's exception: its speed reading decides it. Keep a reading that decides the stage, as the review's second option says, and record why in the issue. Take the NOTEs as the review names them, with "back" for "document" first among them. For the busy-wake 8-thread arm (NOTE 3), say the 100 µs bound decides it, because nothing published covers it and latency is its whole purpose. |
Triage of an external automated review (ChatGPT, supplied by the owner)I read the review against #887 at
BLOCKER
NOTE None. |
|
The orchestrator, on the triage's FSGSBASE BLOCKER (#887 (comment)). Unlike the TSC-deadline mode, FSGSBASE has published backing: Linux enables it by default on every CPU that has it since 5.9, with the complete OS implementation Intel's guidance asks for (the kernel saves and restores the bases itself and trusts no user-written GS on entry). So the stage is a design the published state of the art backs. Its figure is reported, never gated, and the rename to |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
… what backs it on both makers Round 1's review of #887 and the orchestrator's rulings on it. - The TSC-deadline stage gets its twin and kill line back. The SDM documents the mode and recommends it over the count nowhere, and AMD's APM Vol. 3 (24594 rev. 3.36, §E.3.2) has CPUID.01H:ECX[24] reserved, so an AMD CPU keeps the count and its calibration beside any deadline: nothing published covers the choice and speed is its only purpose, the owner's exception, where its reading decides it. The AMD bench's CPUID read leaves the exit, which the APM answers. - The track says "back", as the role prompts do since #885, and "nothing published covers" for the case the owner ruled on. - The busy-wake defect cites Lozi et al.'s §3.3, the Overload-on-Wakeup bug and its fix, with the fix's power condition, in place of the abstract's invariant. Its 8-spinner arm, where no core idles, is one nothing published covers and whose purpose is latency, so its 100 us bound decides that arm's design. - The MWAIT and per-CPU-line stages record AMD's position as read: APM Vol. 3's MONITOR and MWAIT document the wait on another processor's store and recommend no idle loop; APM Vol. 2 and the family 17h models 30h-and-greater optimization guide (56305 rev. 3.02) say nothing on MWAIT or false sharing. - FSGSBASE is backed: Intel's guidance names the complete OS implementation it asks for, and Linux 5.9 meets it and enables it on every CPU that has it. The issue cites both and AMD's APM, states the condition ToyOS's implementation meets, and its exit adds a thread's bases surviving a switch. - APST takes its design from the NVMe base specification 2.1 and the drive's own id-ctrl, not from Linux's policy, and its oracle is the specification's rules. Linux's quirks for drives whose APST failed under it go: the T14's drive's id-ctrl is unread. - The C-states file is left to #870, which takes it up. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
|
The orchestrator, on the two stages left open (the MWAIT idle loop and per-CPU false sharing, on the AMD bench), applying #885's rule:
The agent's proposed rule (documented-but-not-recommended falls under the speed-only exception) is how #885's "back" already reads, so no new sentence is placed. |
|
Round 2, head Net lines ( Evidence: Earlier findings
BLOCKER
NOTE
SEND BACK |
|
The orchestrator, correcting two earlier rulings in light of round 2's evidence (#887 (comment)). Those rulings read the vendors' manuals and not Linux, and #885's rule counts the published state of the art too.
|
…ed-ruling #871 closes issues/every-syscall-saves-the-fp-state-and-every-preemption-disable-is-locked.md (cdd090b), which this branch modified: the deletion is taken. This branch's four hunks there are accounted for: the SDM §16.4 and APM §2.5.12 citations backed a save at the switch, which #871 built; the §6.6 to §7.6 correction is at PerCpu::preempt_count's doc on main; the kill line and the exit's "or kept with its refusal reason" were about an exit #871 met in full. The track, which this branch takes up, drops the closed file from its measured stages and its exit list, and drops the "Unexplained" bullet on the syscall's lock saving, which pointed at that file and which cdd090b answers by counting ten stripped sites. Its exit list gains the two issues #871 filed with the track as their owner: every-syscall-takes-the-process-table-lock-twice-to-count-itself and a-thread-resuming-on-the-cpu-that-holds-its-state-restores-it-again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
…AMD follow what Linux backs The orchestrator's corrected rulings on #887 (#887 (comment)), after round 2's review read Linux where rounds 1 and 2 read only the vendors' manuals: - The TSC deadline is backed. Linux has armed its one-shot through IA32_TSC_DEADLINE since v3.8 (279f1461432c, Intel's Suresh Siddha: no APIC calibration at boot, no uncached re-arm under xAPIC), and since v7.1 hands the deadline over in TSC cycles without reading the TSC (f246ec3478cf). The kill line and the rejected outcome go; the twin stays, its reading reported, its clock control voiding a reading to be taken again rather than a decision. - The busy wake's 8-spinner arm is backed by wakeup preemption: CFS's check_preempt_curr_fair at v2.6.23, by virtual deadline since v6.6 (147f3efaa241). The 100 us bound is the exit's test, not the design's judge. - MWAIT idle is backed on AMD from family 17h by AMD's own commit aebef63cf7ff (v6.0). The issue says per vendor what backs it. - Round 2's NOTE 2: the per-CPU lines issue cites Linux's DEFINE_PER_CPU_SHARED_ALIGNED runqueues and ____cacheline_aligned_in_smp, and AMD's CLFLUSH line-size field and 56305's 64-byte line. Round 2's NOTE 3, the lock half's Linux citation, has no file to go in: #871 closed every-syscall-saves-the-fp-state-and-every-preemption-disable-is-locked in the merge before this commit. Each commit's text, and the release that first carries it, is quoted on ToyOSOrg/evidence pr-887's sources.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
|
Round 3, head Net lines ( Evidence:
Earlier findings
The merge of
BLOCKER
NOTE
SEND BACK |
|
The orchestrator, on round 3 (#887 (comment)), under #885's rule:
|
#888 touches only .claude/agents/orchestrator.md, which this branch does not. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
…EVDF whole, MONITOR's erratum keeps the kick Round 3's review (#887, 6130446811) and the orchestrator's rulings on it (6130566783): - The TSC deadline: the twin and its clock control go. The exit reads the split again on the T14 after the change, as the MWAIT stage's does, and reports the 1 ms timer lateness with the count and with the deadline, where round 3 held it "no worse than the count's". - The busy wake's 8-spinner arm follows EEVDF whole: v6.6 curbs wakeup preemption too (63304558ba5d, RUN_TO_PARITY, on by default at v7.2), so that arm's test is a woken task running within one protected slice, 1 ms (#874's PROTECTED_RUN_NS), and its p99 against 100 us is reported. The 7-spinner arm keeps the 100 us bound as its test. - MWAIT idle: a CPU whose MONITOR loses wakes keeps the kick, as Linux keeps it. c9a4b55431e5 (v6.13, Intel's Len Brown) adds Lunar Lake to Goldmont in X86_BUG_MONITOR; at v7.2 such a CPU's MWAIT idle sets no polling flag, so each wake of it is an IPI. - APST: blockd honours NVME_QUIRK_NO_APST and NVME_QUIRK_NO_DEEPEST_PS, the drives whose APST failed, which round 2 had dropped with Linux's latency policy. No reading in the tree names the T14's drive, so whether it is one of them is unread. - fsgsbase-is-taken: CR4_FORBIDDEN is at control_regs.rs:149-153, and gsbase_locked and its user-writable-gsbase kernel, which 29e1006 cut, are named as stage C of the guest-suite track's. The track's TSC-deadline bullet drops its twin. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
|
Round 4, head Net lines (
Evidence:
Earlier findings
The owner's direction The coordinator relayed it during this review: ToyOS does not follow Linux and references it nowhere in the tree; the authority is the vendor's documentation and the published literature. It is not yet on this pull request's record. The orchestrator posts it, then rules again on every stage below whose backing was Linux alone. Each BLOCKER is one place where a ruling of this pull request, or a record this branch writes, rests on Linux. Each says what could replace it, or that nothing does. BLOCKER
NOTE
SEND BACK |
|
The owner's direction, and the re-rulings it forces (after #887 (comment)). The owner: "Were not reimplementing linux and if we look at the code we use clean room procedure because i think linux has a bad license. We dont want to reference linux anywhere in our code." He confirmed the same procedure covers permissively licensed code. The authority for a design, a value or a test oracle is the vendor's documentation and the published literature. Another implementation's source is read only clean-room. Linux is cited nowhere in the tree as an authority. Round 3's rulings that rested on Linux alone are re-ruled here:
NOTE 2: a figure measured from another OS on our bench is a comparison, not an authority. The tree states ToyOS's own targets, and a comparison lives in the evidence. |
None of the three touches a file this branch changes. #890 changes .claude/agents/reviewer.md's Tests and Guest tests, #876 and #883 file Wi-Fi and DNS issues and change netstack, supervisor and build/build.rs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
None of them touches a file this branch changes. #873 deletes issues/page-global-is-a-decision-nobody-has-made.md, which no file of this branch cites. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
…the literature, and cite no Linux The owner's direction and the orchestrator's re-rulings on round 4's review (#887, 6131140814, 6131154873): - TSC deadline: Intel's SDM defines the mode and recommends nothing, AMD has none (APM, and the AMD bench's PPR 55922 rev 3.06), so the T14's speed reading decides it. A twin reads the 1 ms timer lateness under the count and under the deadline; the better is kept, and the twin is deleted once it has answered. Intel's Tiger Lake specification update 631123-034 lists no TSC, TSC-deadline or APIC-timer erratum. - The busy wake's 8-spinner arm stands on EEVDF (Stoica et al., RTSS 1996, the algorithm of TR-95-22): a quantum goes, at its start, to the eligible request with the earliest virtual deadline. The exit stands. - MWAIT idle is backed on Intel. AMD's PPR for the AMD bench enumerates MONITOR/MWAIT with one C1 sub-state and names no idle loop, so on AMD the stage follows the bench's _CST, still unread. - The kick stays on a CPU a vendor erratum names: Intel's APL30 (334820-010) names Goldmont. Lunar Lake goes: Intel's Core Ultra 200V specification update was not found to read. The verdict is host-tested by CPUID vendor, family and model (round 4's NOTE 1). - FSGSBASE stands on Intel's 767615 and its three elements, which ToyOS meets or has nothing of; its oracle is the vector-2 arm on the T14. - Per-CPU lines: Intel's Rule 17 on the T14; on the AMD bench AMD's family 17h guide (55723 rev 3.00) and PPR give the 64-byte line and the cache-to-cache transfer, and say nothing on false sharing. - APST follows the NVMe specification with no table of drives; a drive that misbehaves is a defect, measured and filed. - The track's rule states ToyOS's own figures; a comparison with another OS lives in the evidence (NOTE 2). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy
|
Ruling on ruling 6’s AMD half. AMD’s guide (55723 rev 3.00) documents the 64-byte line. Placing per-CPU data on lines of its own is ToyOS’s rule, resting on that documented size, and it needs no false-sharing text from AMD. The AMD half stands. |
|
Round 5, head Net lines (
Evidence:
I checked the two vendor documents the brief supplied against their own text. Both SHA-256s match
Earlier findings
BLOCKER
NOTE
SEND BACK |
|
Rulings on the round-4 re-review (#887 (comment)).
|
The ruling
The owner's answers to round 1 of #885 (#885 (comment)): where the manufacturers or the published state of the art back a design, it is followed and its bench numbers are reported and never block it; a design nothing published covers is reviewed on its merits, and a speed claim decides only where speed is the design's only purpose. His answer on the metal ceiling (#885 (comment)) keeps a timing past twice its machine's record red on every design; no line here touches a row's record or ceiling.
His direction during round 4, as the orchestrator posted it (#887 (comment)): ToyOS does not follow Linux, cites it nowhere in the tree as an authority, and reads another implementation's source only clean-room (#902 put that in the prompts). The authority for a design, a value or an oracle is the vendor's documentation and the published literature. That comment re-rules every stage whose backing was Linux alone; this branch applies it. No Linux source was read this round.
This branch touches only
issues/: the track, which it takes up, and six of its stages.What changed, per stage
The track (
toyos-uses-what-modern-hardware-offers-for-speed). Its rule follows the prompts since #885: a backed stage follows and cites its backing and reports its figure, and a slowdown is filed as a defect carrying both figures; a stage nothing published covers is judged on its merits, its figure deciding only where speed is its only purpose. Per NOTE 2 the rule names no other OS's figure. No kill condition, no "worth building", no twin section; the issues #871 closed and filed are dropped and listed.TSC deadline (ruling 1). The SDM defines the mode (§13.5.4.1) and recommends it over the count nowhere; AMD has none (APM §E.3.2, and the AMD bench's PPR 55922 rev. 3.06, CPUID.01H:ECX[24] reserved). Intel's specification update for the T14's processor, 631123-034 (UP3, 000806C1h), lists no TSC, TSC-deadline or APIC-timer erratum. Speed is its only purpose, so the T14's reading decides: a twin reads the 1 ms timer lateness and the split under the count and under the deadline in one session, the arm whose lateness measures better is kept, and the twin is deleted once it has answered. Where the count wins the file becomes
rejectedwith both readings.The busy wake's 8-spinner arm (ruling 2). It stands on EEVDF: the resource is "allocated in time quanta of size at most q. At the beginning of each time quantum a client is selected", and "A new quantum is allocated to the client which has the eligible request with the earliest virtual deadline" (Stoica et al., RTSS 1996, the algorithm of TR-95-22). A task woken inside a quantum is picked no sooner than the next one's start; with a wake's q the protected slice (#874's
PROTECTED_RUN_NS, 1 ms), the exit stands as it was. The 7-spinner arm keeps Lozi et al. (EuroSys 2016 §3.3) and its 100 µs bound.MWAIT idle (rulings 3 and 4). Backed on Intel by SDM §11.10.4 and §11.10.6.4. The AMD bench's PPR enumerates MONITOR/MWAIT, gives a 64-byte monitor line and one MWAIT C1 sub-state, and names no idle loop, so on AMD the stage follows the bench's
_CST, still unread: the exit takes the doorbell there where its C1 is FFH MWAIT and keepshltand the kick where not. The kick stays on a CPU a vendor erratum names: Intel's APL30 (334820-010), "A Store Instruction May Not Wake Up MWAIT", names Goldmont; 631123-034 lists no MONITOR or MWAIT erratum for the T14. Lunar Lake goes (see Unsure). Per round 4's NOTE 1 the exit holds the kick verdict by a host test of a pure function of CPUID's vendor, family and model, red where Goldmont is woken by the store alone or the T14 is kicked.FSGSBASE (ruling 5). Stands on Intel's 767615, which asks a complete implementation before production use: context switch and process-trace system calls keep the bases apart from the selectors, and ring transitions are insensitive to the GS base. ToyOS meets the first two by the exit's arms and has no system call that reads or writes another thread's registers. The oracle is the vector-2 arm on the T14.
Per-CPU lines (ruling 6). Intel's Rule 17 (248966-051 §11.4.5) backs it on the T14. On the AMD bench, AMD's family 17h optimization guide (55723 rev. 3.00, §2.6.1, §2.6.4) and PPR give the 64-byte line and the cache-to-cache transfer a line in another core's L2 costs; neither, nor the APM or 56305, says anything on false sharing, and the issue says so.
APST (ruling 7). Follows the NVMe Base Specification 2.1 with no table of drives; a drive that misbehaves is a defect measured on the bench and filed. The exit's "a quirked drive's among them" goes.
Every quote is in
sources.md, with each document's URL or provenance and SHA-256: https://github.com/ToyOSOrg/evidence/blob/742acf4d75c96622f7ecc3c1fef20e9c12bf904b/sources.md. It quotes no Linux.Round 4's review (#887 (comment))
_CSTis read, and the exit says so per vendor.Merges of
main9b41c8e06merges #890, #876 and #883, and10dd91393merges #902, #897 and #873; none touches a file this branch changes. #873 deletespage-global-is-a-decision-nobody-has-made.md, which no file here cites. Earlier,ce43d7bd2took #871's deletion ofevery-syscall-saves-the-fp-state-and-every-preemption-disable-is-locked.md, whose four hunks here were all met by #871.Gates
cargo run -- --ci hostat11be3ba557c25e67b5c8e32c7b0828ad16863834: EXIT=0, "Host: 76 step(s), all green". Log: https://github.com/ToyOSOrg/evidence/blob/742acf4d75c96622f7ecc3c1fef20e9c12bf904b/ci-host.log (the home directory written as~).issues/. No production code changes, so no design round, negative control or oracle.Unsure
Collisions
_CSTDesign: idle CPUs enter the deep idle states the firmware declares #870 reads.PROTECTED_RUN_NSby A wake to another CPU that is busy is drained at its next preemption point and runs within a bound #874's link: not yet onmain.🤖 Generated with Claude Code
https://claude.ai/code/session_015xhaydXCVRNscoccHYFUWy