summary refs log tree commit diff stats
path: root/gitlab/issues/target_i386/host_missing/accel_KVM/2007.toml
diff options
context:
space:
mode:
Diffstat (limited to 'gitlab/issues/target_i386/host_missing/accel_KVM/2007.toml')
-rw-r--r--gitlab/issues/target_i386/host_missing/accel_KVM/2007.toml39
1 files changed, 39 insertions, 0 deletions
diff --git a/gitlab/issues/target_i386/host_missing/accel_KVM/2007.toml b/gitlab/issues/target_i386/host_missing/accel_KVM/2007.toml
new file mode 100644
index 00000000..6607f83e
--- /dev/null
+++ b/gitlab/issues/target_i386/host_missing/accel_KVM/2007.toml
@@ -0,0 +1,39 @@
+id = 2007
+title = "Unable to update APIC_TPR when x2APIC is enabled and -global kvm-pit.lost_tick_policy=discard parameter provided"
+state = "opened"
+created_at = "2023-11-27T13:58:54.734Z"
+closed_at = "n/a"
+labels = ["accel: KVM", "target: i386"]
+url = "https://gitlab.com/qemu-project/qemu/-/issues/2007"
+host-os = "Gentoo Linux"
+host-arch = "x86"
+qemu-version = "QEMU emulator version 8.1.2"
+guest-os = "OSDEV (custom OS)"
+guest-arch = "x86 (both i686 and amd64)"
+description = """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."""
+reproduce = "n/a"
+additional = """Please let me know if you need additional information."""