qemu/include/hw/i386
Bernhard Beschow c2e6d7d8e7 hw/i386/x86: Fix PIC interrupt handling if APIC is globally disabled
QEMU populates the apic_state attribute of x86 CPUs if supported by real
hardware or if SMP is active. When handling interrupts, it just checks whether
apic_state is populated to route the interrupt to the PIC or to the APIC.
However, chapter 10.4.3 of [1] requires that:

  When IA32_APIC_BASE[11] is 0, the processor is functionally equivalent to an
  IA-32 processor without an on-chip APIC.

This means that when apic_state is populated, QEMU needs to check for the
MSR_IA32_APICBASE_ENABLE flag in addition. Implement this which fixes some
real-world BIOSes.

[1] Intel 64 and IA-32 Architectures Software Developer's Manual, Vol. 3A:
    System Programming Guide, Part 1

Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Message-Id: <20240106132546.21248-3-shentey@gmail.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2024-02-14 06:09:32 -05:00
..
apic_internal.h apic, i386/tcg: add x2apic transitions 2024-02-14 06:09:32 -05:00
apic-msidef.h
apic.h hw/i386/x86: Fix PIC interrupt handling if APIC is globally disabled 2024-02-14 06:09:32 -05:00
hostmem-epc.h hostmem: Add hostmem-epc as a backend for SGX EPC 2021-09-30 14:50:19 +02:00
intel_iommu.h hw/i386/intel_iommu: Fix endianness problems related to VTD_IR_TableEntry 2023-08-03 16:06:49 -04:00
microvm.h Revert "x86: don't let decompressed kernel image clobber setup_data" 2023-03-02 03:10:46 -05:00
pc.h hw/xen: use qemu_create_nic_bus_devices() to instantiate Xen NICs 2024-02-02 16:23:47 +00:00
sgx-epc.h include: Include headers where needed 2023-01-08 01:54:22 -05:00
topology.h hw/i386: Fix comment style in topology.h 2023-11-07 13:08:48 +01:00
vmport.h hw/i386/vmport: Drop superfluous parenthesis around function typedef 2020-09-18 13:49:54 -04:00
x86-iommu.h include/hw/i386/x86-iommu: Fix struct X86IOMMU_MSIMessage for big endian hosts 2023-08-03 16:16:17 -04:00
x86.h include/hw/i386: Clean up includes in x86.h 2023-03-07 14:30:42 +01:00
xen_arch_hvm.h xen-hvm: reorganize xen-hvm and move common function to xen-hvm-common 2023-06-15 16:45:59 -07:00