Repository navigation
Run x86 guests under TCG on one thread - #88
Merged
Merged
Conversation
Owner
Author
|
Timing with this change on server2, for one KUnit boot of 7.2.8 X64 defconfig+test under TCG with
KUnit runs one test at a time, so a second host thread gave almost nothing. Both boots stay far below the 1800 s timeout. The boot loop before this change had 1 int3 panic in 29 boots for each compiler, and with it there were 0 in 40 for each. The same run found one splat only in the rucc kernel log: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A 2x2 run of 7.2.8 X64 on server2 had one rucc kernel panic in three runs:
Oops: int3atsched_clock_cpu+0x8, 11 ms aftersched_clock: Marking stable. That message comes beforestatic_branch_enable, which patches that site from ajmpto a 5-byte nop. The patch was done and the INT3 handler had given up, but a CPU still ran the INT3.This is not the compiler. In 58 boots of each kernel under TCG, the gcc kernel and the rucc kernel each had one such oops, at
sched_clock_tickand atset_next_task_fair. QEMU 8.2 runs each vCPU on its own host thread by default, and it can let a vCPU run the INT3 after another vCPU has written the old byte back. x86 patches a static key with an INT3 while the other CPUs run, so x86 is the row that sees it. arm64 patches understop_machineand keeps the default.With this change rk passes
-accel tcg,thread=singlefor x86_64 and i386 when there is no KVM. The guest still has two CPUs, but one host thread runs both, so each vCPU sees every write to the text in order. KVM is not changed.On server2 with this rk, 80 boots (40 of each kernel) had no oops. A boot takes longer: the gcc kernel reached init in 24 s and not 8.5 s. The KUnit timing is below.