Guest User

Untitled

a guest
Mar 17th, 2026
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.84 KB | None | 0 0
  1. ## Revised Analysis: Host-Specific Intel Ultra 7 Issue
  2.  
  3. This is a **very significant clue** that reframes the entire problem.
  4.  
  5. ---
  6.  
  7. ### What This Tells Us
  8.  
  9. The fact that this **only occurs on the Intel Ultra 7 (Meteor Lake/Arrow Lake)** host changes the diagnosis from a software/build issue to a **host CPU feature exposure problem**.
  10.  
  11. ---
  12.  
  13. ### Intel Ultra 7 — Relevant Architecture Details
  14.  
  15. ```
  16. Intel Core Ultra 7 (Meteor Lake / Arrow Lake)
  17. ├── New hybrid architecture (P-cores + E-cores + LP E-cores)
  18. ├── New TSC/clock behaviour
  19. ├── New CPUID leaves not present on older CPUs
  20. ├── Changes to FSGSBASE, WAITPKG, HRESET, etc.
  21. └── Different handling of 32-bit legacy compatibility
  22. ```
  23.  
  24. ---
  25.  
  26. ### The Likely Mechanism
  27.  
  28. #### QEMU CPU Model Mismatch
  29.  
  30. ```
  31. QEMU Standard PC (Q35 + ICH9)
  32. │
  33. ├── If using -cpu host → exposes Ultra 7 features to guest
  34. │ └── Guest kernel (32-bit compat) may not handle
  35. │ new CPUID/clock features correctly
  36. │
  37. └── If using default QEMU cpu model → may behave
  38. differently on Ultra 7 host than older hosts
  39. ```
  40.  
  41. When QEMU runs on an Ultra 7 with `-cpu host` or similar, it exposes CPU features that **older QEMU CPU models don't present**. The guest kernel's 32-bit `clock_gettime` path may then select a **clock source or vDSO path that doesn't work correctly** under that configuration.
  42.  
  43. ---
  44.  
  45. ### Specific Suspects on Ultra 7
  46.  
  47. #### 1. TSC Deadline / Always-Running TSC Behaviour
  48. ```
  49. Ultra 7 has:
  50. ├── TSC_ADJUST MSR behaviour changes
  51. ├── Invariant TSC (but with new topology awareness)
  52. └── Different TSC sync behaviour across P/E cores
  53. │
  54. └── QEMU may expose an inconsistent TSC to the guest
  55. causing clock_gettime function pointer to be
  56. set up incorrectly or not at all
  57. ```
  58.  
  59. #### 2. CPUID Leaf Exposure
  60. ```
  61. New CPUID leaves on Meteor Lake/Arrow Lake:
  62. ├── May confuse guest kernel clock source selection
  63. ├── 32-bit compat path may hit untested code branch
  64. └── Function pointer left NULL after failed init
  65. ```
  66.  
  67. #### 3. KVM Behaviour Difference
  68. ```
  69. KVM on Ultra 7:
  70. ├── Different KVM clock calibration
  71. ├── Possible KVM bug with new CPU features
  72. └── kvmclock or pvclock init may fail silently
  73. │
  74. └── Leaving clock_gettime dispatch pointer as NULL
  75. ```
  76.  
  77. ---
  78.  
  79. ### Confirming the Theory
  80.  
  81. #### Check KVM/CPU Exposure in QEMU Config
  82. ```bash
  83. # On the Ultra 7 host, check how QEMU is invoking the VM
  84. ps aux | grep qemu
  85. # or
  86. cat /proc/$(pgrep qemu)/cmdline | tr '\0' ' '
  87.  
  88. # Look specifically for:
  89. # -cpu host ← exposes all Ultra 7 features
  90. # -cpu qemu64 ← generic, less likely to cause this
  91. # -enable-kvm ← KVM path vs pure emulation
  92. ```
  93.  
  94. #### Compare CPUID Exposed to Guest
  95. ```bash
  96. # Inside the VM on crashing host:
  97. cpuid -1
  98.  
  99. # Inside the VM on working host:
  100. cpuid -1
  101.  
  102. # diff the outputs — unexpected feature flags are your culprit
  103. ```
  104.  
  105. #### Check KVM Clock on Ultra 7 Host
  106. ```bash
  107. # On Ultra 7 host:
  108. dmesg | grep -i "kvm\|tsc\|clock\|kvmclock"
  109. cat /sys/devices/system/clocksource/clocksource0/current_clocksource
  110. cat /sys/devices/system/clocksource/clocksource0/available_clocksource
  111.  
  112. # Compare with working host
  113. ```
  114.  
  115. #### Check for KVM Bugs
  116. ```bash
  117. # On Ultra 7 host:
  118. dmesg | grep -i "kvm\|vmx\|unrestricted"
  119.  
  120. # Check KVM module version
  121. modinfo kvm_intel | grep version
  122. ```
  123.  
  124. ---
  125.  
  126. ### Specific Test to Isolate
  127.  
  128. ```bash
  129. # Test 1: Force a specific CPU model in QEMU (not 'host')
  130. # Change QEMU launch to use:
  131. -cpu Skylake-Client-v4 # known stable older model
  132.  
  133. # If this fixes it → CPU feature exposure is the problem
  134.  
  135. # Test 2: Disable KVM
  136. -no-kvm # or remove -enable-kvm
  137. # Pure emulation, no host CPU bleed-through
  138. # If this fixes it → KVM interaction with Ultra 7 is the problem
  139.  
  140. # Test 3: Disable TSC in guest
  141. # Add to kernel cmdline:
  142. clocksource=hpet # or acpi_pm
  143. # If this fixes it → TSC behaviour on Ultra 7 is the problem
  144.  
  145. # Test 4: Pin QEMU to P-cores only (not E-cores)
  146. taskset -c 0,2,4,6 qemu-system-i386 ...
  147. # Ultra 7 TSC sync issues between P and E cores
  148. # If this fixes it → hybrid core TSC skew is the problem
  149. ```
  150.  
  151. ---
  152.  
  153. ### Most Probable Cause Ranking
  154.  
  155. | Rank | Cause | Confidence |
  156. |------|-------|------------|
  157. | 1 | **KVM exposing Ultra 7 TSC/clock features that confuse 32-bit guest clock init** | High |
  158. | 2 | **CPUID leaves from Meteor Lake causing wrong clock source selection** | High |
  159. | 3 | **TSC skew between P-cores and E-cores causing clock calibration failure** | Medium |
  160. | 4 | **KVM bug specific to Ultra 7 VMX implementation** | Medium |
  161. | 5 | **QEMU version not yet updated for Ultra 7 quirks** | Medium |
  162.  
  163. ---
  164.  
  165. ### Recommended Fix Path
  166.  
  167. ```
  168. 1. Identify QEMU -cpu argument being used on Ultra 7 host
  169. │
  170. ├── If -cpu host → change to explicit model (e.g. Skylake-Client-v4)
  171. │
  172. └── If already explicit → check QEMU and KVM versions
  173.  
  174. 2. Update QEMU and kernel on Ultra 7 host
  175. (Meteor Lake support improved in QEMU 8.1+, kernel 6.6+)
  176.  
  177. 3. If using -cpu host, add specific feature suppression:
  178. -cpu host,-tsc-deadline,-kvmclock,-kvm_pv_unhalt
  179.  
  180. 4. Check for KVM errata for Meteor Lake on your host kernel version
  181. dmesg | grep -i "errata\|microcode\|VMX"
  182. ```
  183.  
  184. ---
  185.  
  186. ### Bottom Line
  187.  
  188. > The crash is almost certainly caused by **KVM or QEMU exposing Intel Ultra 7 (Meteor Lake/Arrow Lake) CPU features** that the **32-bit compatibility syscall path in the Yocto guest kernel doesn't handle correctly**, resulting in a NULL clock function pointer. The fix is likely a **QEMU CPU model configuration change** or **QEMU/host kernel update** with proper Meteor Lake support.
Advertisement
Add Comment
Please, Sign In to add comment