summaryrefslogtreecommitdiffstats
path: root/sys/amd64/vmm/io/vioapic.h
Commit message (Collapse)AuthorAgeFilesLines
* Add support for level triggered interrupt pins on the vioapic. Prior to thisneel2013-11-271-0/+3
| | | | | | | | | | | | | | | commit level triggered interrupts would work as long as the pin was not shared among multiple interrupt sources. The vlapic now keeps track of level triggered interrupts in the trigger mode register and will forward the EOI for a level triggered interrupt to the vioapic. The vioapic in turn uses the EOI to sample the level on the pin and re-inject the vector if the pin is still asserted. The vhpet is the first consumer of level triggered interrupts and advertises that it can generate interrupts on pins 20 through 23 of the vioapic. Discussed with: grehan@
* Add HPET device emulation to bhyve.neel2013-11-251-3/+0
| | | | | | | | | | | bhyve supports a single timer block with 8 timers. The timers are all 32-bit and capable of being operated in periodic mode. All timers support interrupt delivery using MSI. Timers 0 and 1 also support legacy interrupt routing. At the moment the timers are not connected to any ioapic pins but that will be addressed in a subsequent commit. This change is based on a patch from Tycho Nightingale (tycho.nightingale@pluribusnetworks.com).
* Add an ioctl to assert and deassert an ioapic pin atomically. This will be usedneel2013-11-231-0/+1
| | | | | | | | | to inject edge triggered legacy interrupts into the guest. Start using the new API in device models that use edge triggered interrupts: viz. the 8254 timer and the LPC/uart device emulation. Submitted by: Tycho Nightingale (tycho.nightingale@pluribusnetworks.com)
* Move the ioapic device model from userspace into vmm.ko. This is needed forneel2013-11-121-0/+49
upcoming in-kernel device emulations like the HPET. The ioctls VM_IOAPIC_ASSERT_IRQ and VM_IOAPIC_DEASSERT_IRQ are used to manipulate the ioapic pin state. Discussed with: grehan@ Submitted by: Tycho Nightingale (tycho.nightingale@pluribusnetworks.com)
OpenPOWER on IntegriCloud