freebsd-skq/sys/amd64/vmm
Roger Pau Monné 5ea878684f bhyve/ioapic: improve the tracking of IRR bit
One common method of EOI'ing an interrupt at the IO-APIC level is to
switch the pin to edge triggering mode and then back into level mode.
That would cause the IRR bit to be cleared and thus further interrupts
to be injected. FreeBSD does indeed use that method if the IO-APIC EOI
register is not supported.

The bhyve IO-APIC emulation code didn't clear the IRR bit when doing
that switch, and was also missing acknowledging the IRR state when
trying to inject an interrupt in vioapic_send_intr.

Reviewed by:		grehan
Differential revision:	https://reviews.freebsd.org/D28238
2021-02-02 09:47:00 +01:00
..
amd Convert vmm_ops calls to IFUNC 2020-11-28 01:16:59 +00:00
intel Convert vmm_ops calls to IFUNC 2020-11-28 01:16:59 +00:00
io bhyve/ioapic: improve the tracking of IRR bit 2021-02-02 09:47:00 +01:00
vmm_dev.c Honor the disabled setting for MSI-X interrupts for passthrough devices. 2020-11-24 23:18:52 +00:00
vmm_host.c Correct undesirable interaction between caching of %cr4 in bhyve and 2018-04-24 13:44:19 +00:00
vmm_host.h amd64: move GDT into PCPU area. 2019-11-12 15:51:47 +00:00
vmm_instruction_emul.c Add bhyve support for LA57 guest mode. 2020-08-23 20:37:21 +00:00
vmm_ioport.c Add SPDX tags to vmm(4). 2018-06-13 07:02:58 +00:00
vmm_ioport.h Add SPDX tags to vmm(4). 2018-06-13 07:02:58 +00:00
vmm_ktr.h sys/amd64: further adoption of SPDX licensing ID tags. 2017-11-27 15:03:07 +00:00
vmm_lapic.c vmx: use C99 bool, not boolean_t 2019-08-01 02:16:48 +00:00
vmm_lapic.h vmx: use C99 bool, not boolean_t 2019-08-01 02:16:48 +00:00
vmm_mem.c sys/amd64: further adoption of SPDX licensing ID tags. 2017-11-27 15:03:07 +00:00
vmm_mem.h sys/amd64: further adoption of SPDX licensing ID tags. 2017-11-27 15:03:07 +00:00
vmm_snapshot.c Initial support for bhyve save and restore. 2020-05-05 00:02:04 +00:00
vmm_stat.c vmm: Add Hygon Dhyana support. 2020-02-13 19:03:12 +00:00
vmm_stat.h amd64: clean up empty lines in .c and .h files 2020-09-01 21:16:54 +00:00
vmm_util.c Convert vmm_ops calls to IFUNC 2020-11-28 01:16:59 +00:00
vmm_util.h Convert vmm_ops calls to IFUNC 2020-11-28 01:16:59 +00:00
vmm.c bhyve: limit max GPA to VM_MAXUSER_ADDRESS_LA48. 2020-11-29 10:32:38 +00:00
x86.c Clear the upper 32-bits of registers in x86_emulate_cpuid(). 2020-10-01 16:45:11 +00:00
x86.h Clear the upper 32-bits of registers in x86_emulate_cpuid(). 2020-10-01 16:45:11 +00:00