diff options
| author | Christian Krinitsin <mail@krinitsin.com> | 2025-06-16 16:59:00 +0000 |
|---|---|---|
| committer | Christian Krinitsin <mail@krinitsin.com> | 2025-06-16 16:59:33 +0000 |
| commit | 9aba81d8eb048db908c94a3c40c25a5fde0caee6 (patch) | |
| tree | b765e7fb5e9a3c2143c68b0414e0055adb70e785 /results/classifier/118/review/2007 | |
| parent | b89a938452613061c0f1f23e710281cf5c83cb29 (diff) | |
| download | qemu-analysis-9aba81d8eb048db908c94a3c40c25a5fde0caee6.tar.gz qemu-analysis-9aba81d8eb048db908c94a3c40c25a5fde0caee6.zip | |
add 18th iteration of classifier
Diffstat (limited to 'results/classifier/118/review/2007')
| -rw-r--r-- | results/classifier/118/review/2007 | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/results/classifier/118/review/2007 b/results/classifier/118/review/2007 new file mode 100644 index 000000000..260b6b93f --- /dev/null +++ b/results/classifier/118/review/2007 @@ -0,0 +1,89 @@ +register: 0.943 +peripherals: 0.857 +semantic: 0.833 +performance: 0.828 +device: 0.796 +hypervisor: 0.785 +architecture: 0.761 +graphic: 0.731 +kernel: 0.637 +debug: 0.627 +network: 0.617 +assembly: 0.594 +ppc: 0.592 +vnc: 0.565 +x86: 0.562 +user-level: 0.529 +permissions: 0.528 +arm: 0.524 +i386: 0.506 +socket: 0.476 +PID: 0.469 +KVM: 0.441 +boot: 0.428 +risc-v: 0.426 +mistranslation: 0.424 +VMM: 0.386 +TCG: 0.269 +virtual: 0.237 +files: 0.164 +-------------------- +kernel: 0.870 +register: 0.819 +hypervisor: 0.699 +debug: 0.695 +x86: 0.657 +arm: 0.296 +KVM: 0.231 +assembly: 0.213 +virtual: 0.138 +TCG: 0.123 +user-level: 0.080 +ppc: 0.046 +i386: 0.040 +risc-v: 0.039 +files: 0.036 +peripherals: 0.035 +PID: 0.034 +VMM: 0.022 +device: 0.021 +performance: 0.015 +architecture: 0.010 +network: 0.009 +semantic: 0.008 +boot: 0.007 +vnc: 0.003 +socket: 0.003 +permissions: 0.003 +graphic: 0.002 +mistranslation: 0.000 + +Unable to update APIC_TPR when x2APIC is enabled and -global kvm-pit.lost_tick_policy=discard parameter provided +Description of problem: +I am developing a custom OS and I wanted to implement x2APIC support. I was able to enable x2APIC, read and write some registers, like APIC_VER and APIC_SIVR. Everything looks good, except that I cannot update APIC_TPR register. Reading it always returns 0. The code I wrote works properly on bare metal. Below some observations: + +Scenario 1: +1. Enable x2APIC +2. Write to CR8 - success +3. Read from CR8 - gives correct value +4. Read from APIC_TPR - gives correct value + +Scenario 2: +1. Enable x2APIC +2. Read from APIC_TPR - gives 0 +3. Write to APIC_TPR +4. Read from APIC_TPR - gives 0 again + +Scenario 3: +1. Initialize APIC (LAPIC or xAPIC) +2. Write to APIC_TPR +3. Read from APIC_TPR - gives correct value +4. Switch to x2APIC +5. Read from APIC_TPR - gives correct value stored in pt. 2 +6. Write to APIC_TPR +7. Read from APIC_TPR - gives values stored in pt.2, not in point 6! + +Looks like APIC_TPR is stuck at value stored there before switching to x2APIC and it cannot be updated with MSR. Only update CR8 works. +I have checked parameters I passed to qemu. After removing `-global kvm-pit.lost_tick_policy=discard` problem is gone and APIC_TPR is updated correctly. +Additional information: +Please let me know if you need additional information. |