History log of /openbsd-current/usr.sbin/vmd/i8259.c
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.22 01-Sep-2023 dv

vmd(8): ignore masks on asserts, use synchronous deasserts.

The i8259 was considering the state of the mask register when a
device requested raising the bit in the interrupt request register.
This caused a race condition where if the virtio device asserted
the irq while it was masked in the i8259 by the vm, we'd miss the
interrupt request. The device and the pic would become out of sync
and users reported virtio block device stalls as the vioblk(4)
driver would starve, waiting for an interrupt that will never arrive.

The mask is now considered only at ack time, when finding possible
interrupts to inject. This bug was never a problem previously as
virtio devices were emulated synchronously.

Deasserts related to the vcpu reading the virtio isr register are
also made now in response to the read request instead of issued
asynchronously. This removes a subsequent race condition.

Testing from mbuhl@, stsp@, and Florian Riehm.

ok mlarkin@


Revision tags: OPENBSD_7_3_BASE
# 1.21 10-Nov-2022 mbuhl

Initialize data before passing it to get_input_data. Strictly
speaking this is not necessary as all used bits of the uint32_t are
zeroed.
ok mlarkin


Revision tags: OPENBSD_7_0_BASE OPENBSD_7_1_BASE OPENBSD_7_2_BASE
# 1.20 16-Jun-2021 dv

cleanup vmd(8) includes and header files

Lots of organic growth other the years lead to unnecessary includes
(proc.h everywhere) and odd dependencies between header files. This
cleans things up a bit to help with upcoming cleanup around dhcp
code.

No functional change.

"go for it" mlarkin@


Revision tags: OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE OPENBSD_6_9_BASE
# 1.19 12-Jul-2018 mlarkin

vmm(8)/vmm(4): send a copy of the guest register state to vmd on exit,
avoiding multiple readregs ioctls back to vmm in case register content
is needed subsequently.

ok phessler


# 1.18 19-Jun-2018 reyk

knf


# 1.17 27-Apr-2018 mlarkin

vmd(8): implement vmd side of ELCR registers

ok guenther


Revision tags: OPENBSD_6_3_BASE
# 1.16 29-Nov-2017 mlarkin

vmd(8): fix broken IRR bit setting for the slave PIC. Noticed by claudio
when he tried to make a vm with 4 network interfaces.

ok claudio


Revision tags: OPENBSD_6_2_BASE
# 1.15 18-Sep-2017 dlg

protect i8259 state with a mutex.

this allows interrupts to be safely posted by multiple threads.

ok mlarkin@


# 1.14 08-May-2017 reyk

Adds functions to read and write state of devices in vmd.

This is required for implementing vmctl send and vmctl receive. vmctl
send / receive are two new options that will support snapshotting VMs
and migrating VMs from one host to another. The atomicio files are
copied from usr.bin/ssh.

Patch from Pratik Vyas; this project was undertaken at San Jose State
University along with his three teammates, Ashwin, Harshada and Siri
with mlarkin@ as the advisor.

OK mlarkin@


# 1.13 08-Apr-2017 mlarkin

implement nonspecific EOI mode for the legacy PIC

ok deraadt


Revision tags: OPENBSD_6_1_BASE
# 1.12 25-Mar-2017 mlarkin

Last bits needed to get seabios + alpine linux working. This is enough
to get started and let more people help finding and fixing bugs.

ok kettenis, deraadt


# 1.11 25-Mar-2017 mlarkin

Introduce a new function to obtain properly sized input data, and convert
i8253/i8259/mc146818 emulation to use this.


# 1.10 24-Mar-2017 reyk

Backout mlarkin's previous commit while he is away:
The newly-used function get_input_data() is missing and broke the tree.


# 1.9 24-Mar-2017 mlarkin

Last bits of cleanup for linux/seabios support in i8253/i8259 emulation
code.


# 1.8 23-Mar-2017 mlarkin

use proper return data size when doing PIC reads - don't clobber %eax
high bits.


# 1.7 19-Mar-2017 mlarkin

Handle master/slave PIC vector base properly. OpenBSD uses 0x20/0x28
(respectively). Seabios uses 0x8/0x78 and linux uses 0x30/0x38. Respond
properly to PIC vector base assignment and calculate VMX injection
vectors based on current values, instead of always assuming OpenBSD
defaults.

Needed for both seabios serial console support as well as linux guest
support. Tested on -current as is, does not break existing OpenBSD
guest support.


# 1.6 19-Mar-2017 mlarkin

Convert some log_warn into log_warnx, and provide pic names (master,slave)
in debugging output.


# 1.5 17-Jan-2017 krw

Nuke some whitespace that keeps poking me in the eye as I try to
steal code.


# 1.4 20-Nov-2016 mlarkin

Remove some old code that isn't needed anymore.


# 1.3 03-Oct-2016 mlarkin

add RCS tags


# 1.2 01-Sep-2016 mlarkin

change some log_warn to log_warnx and convert some integer literals to
enumerand values


# 1.1 01-Sep-2016 mlarkin

Add a set of emulated legacy devices (PIT, PIC, RTC)

discussed with stefan and deraadt


# 1.21 10-Nov-2022 mbuhl

Initialize data before passing it to get_input_data. Strictly
speaking this is not necessary as all used bits of the uint32_t are
zeroed.
ok mlarkin


Revision tags: OPENBSD_7_0_BASE OPENBSD_7_1_BASE OPENBSD_7_2_BASE
# 1.20 16-Jun-2021 dv

cleanup vmd(8) includes and header files

Lots of organic growth other the years lead to unnecessary includes
(proc.h everywhere) and odd dependencies between header files. This
cleans things up a bit to help with upcoming cleanup around dhcp
code.

No functional change.

"go for it" mlarkin@


Revision tags: OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE OPENBSD_6_9_BASE
# 1.19 12-Jul-2018 mlarkin

vmm(8)/vmm(4): send a copy of the guest register state to vmd on exit,
avoiding multiple readregs ioctls back to vmm in case register content
is needed subsequently.

ok phessler


# 1.18 19-Jun-2018 reyk

knf


# 1.17 27-Apr-2018 mlarkin

vmd(8): implement vmd side of ELCR registers

ok guenther


Revision tags: OPENBSD_6_3_BASE
# 1.16 29-Nov-2017 mlarkin

vmd(8): fix broken IRR bit setting for the slave PIC. Noticed by claudio
when he tried to make a vm with 4 network interfaces.

ok claudio


Revision tags: OPENBSD_6_2_BASE
# 1.15 18-Sep-2017 dlg

protect i8259 state with a mutex.

this allows interrupts to be safely posted by multiple threads.

ok mlarkin@


# 1.14 08-May-2017 reyk

Adds functions to read and write state of devices in vmd.

This is required for implementing vmctl send and vmctl receive. vmctl
send / receive are two new options that will support snapshotting VMs
and migrating VMs from one host to another. The atomicio files are
copied from usr.bin/ssh.

Patch from Pratik Vyas; this project was undertaken at San Jose State
University along with his three teammates, Ashwin, Harshada and Siri
with mlarkin@ as the advisor.

OK mlarkin@


# 1.13 08-Apr-2017 mlarkin

implement nonspecific EOI mode for the legacy PIC

ok deraadt


Revision tags: OPENBSD_6_1_BASE
# 1.12 25-Mar-2017 mlarkin

Last bits needed to get seabios + alpine linux working. This is enough
to get started and let more people help finding and fixing bugs.

ok kettenis, deraadt


# 1.11 25-Mar-2017 mlarkin

Introduce a new function to obtain properly sized input data, and convert
i8253/i8259/mc146818 emulation to use this.


# 1.10 24-Mar-2017 reyk

Backout mlarkin's previous commit while he is away:
The newly-used function get_input_data() is missing and broke the tree.


# 1.9 24-Mar-2017 mlarkin

Last bits of cleanup for linux/seabios support in i8253/i8259 emulation
code.


# 1.8 23-Mar-2017 mlarkin

use proper return data size when doing PIC reads - don't clobber %eax
high bits.


# 1.7 19-Mar-2017 mlarkin

Handle master/slave PIC vector base properly. OpenBSD uses 0x20/0x28
(respectively). Seabios uses 0x8/0x78 and linux uses 0x30/0x38. Respond
properly to PIC vector base assignment and calculate VMX injection
vectors based on current values, instead of always assuming OpenBSD
defaults.

Needed for both seabios serial console support as well as linux guest
support. Tested on -current as is, does not break existing OpenBSD
guest support.


# 1.6 19-Mar-2017 mlarkin

Convert some log_warn into log_warnx, and provide pic names (master,slave)
in debugging output.


# 1.5 17-Jan-2017 krw

Nuke some whitespace that keeps poking me in the eye as I try to
steal code.


# 1.4 20-Nov-2016 mlarkin

Remove some old code that isn't needed anymore.


# 1.3 03-Oct-2016 mlarkin

add RCS tags


# 1.2 01-Sep-2016 mlarkin

change some log_warn to log_warnx and convert some integer literals to
enumerand values


# 1.1 01-Sep-2016 mlarkin

Add a set of emulated legacy devices (PIT, PIC, RTC)

discussed with stefan and deraadt


# 1.20 16-Jun-2021 dv

cleanup vmd(8) includes and header files

Lots of organic growth other the years lead to unnecessary includes
(proc.h everywhere) and odd dependencies between header files. This
cleans things up a bit to help with upcoming cleanup around dhcp
code.

No functional change.

"go for it" mlarkin@


Revision tags: OPENBSD_6_4_BASE OPENBSD_6_5_BASE OPENBSD_6_6_BASE OPENBSD_6_7_BASE OPENBSD_6_8_BASE OPENBSD_6_9_BASE
# 1.19 12-Jul-2018 mlarkin

vmm(8)/vmm(4): send a copy of the guest register state to vmd on exit,
avoiding multiple readregs ioctls back to vmm in case register content
is needed subsequently.

ok phessler


# 1.18 19-Jun-2018 reyk

knf


# 1.17 27-Apr-2018 mlarkin

vmd(8): implement vmd side of ELCR registers

ok guenther


Revision tags: OPENBSD_6_3_BASE
# 1.16 29-Nov-2017 mlarkin

vmd(8): fix broken IRR bit setting for the slave PIC. Noticed by claudio
when he tried to make a vm with 4 network interfaces.

ok claudio


Revision tags: OPENBSD_6_2_BASE
# 1.15 18-Sep-2017 dlg

protect i8259 state with a mutex.

this allows interrupts to be safely posted by multiple threads.

ok mlarkin@


# 1.14 08-May-2017 reyk

Adds functions to read and write state of devices in vmd.

This is required for implementing vmctl send and vmctl receive. vmctl
send / receive are two new options that will support snapshotting VMs
and migrating VMs from one host to another. The atomicio files are
copied from usr.bin/ssh.

Patch from Pratik Vyas; this project was undertaken at San Jose State
University along with his three teammates, Ashwin, Harshada and Siri
with mlarkin@ as the advisor.

OK mlarkin@


# 1.13 08-Apr-2017 mlarkin

implement nonspecific EOI mode for the legacy PIC

ok deraadt


Revision tags: OPENBSD_6_1_BASE
# 1.12 25-Mar-2017 mlarkin

Last bits needed to get seabios + alpine linux working. This is enough
to get started and let more people help finding and fixing bugs.

ok kettenis, deraadt


# 1.11 25-Mar-2017 mlarkin

Introduce a new function to obtain properly sized input data, and convert
i8253/i8259/mc146818 emulation to use this.


# 1.10 24-Mar-2017 reyk

Backout mlarkin's previous commit while he is away:
The newly-used function get_input_data() is missing and broke the tree.


# 1.9 24-Mar-2017 mlarkin

Last bits of cleanup for linux/seabios support in i8253/i8259 emulation
code.


# 1.8 23-Mar-2017 mlarkin

use proper return data size when doing PIC reads - don't clobber %eax
high bits.


# 1.7 19-Mar-2017 mlarkin

Handle master/slave PIC vector base properly. OpenBSD uses 0x20/0x28
(respectively). Seabios uses 0x8/0x78 and linux uses 0x30/0x38. Respond
properly to PIC vector base assignment and calculate VMX injection
vectors based on current values, instead of always assuming OpenBSD
defaults.

Needed for both seabios serial console support as well as linux guest
support. Tested on -current as is, does not break existing OpenBSD
guest support.


# 1.6 19-Mar-2017 mlarkin

Convert some log_warn into log_warnx, and provide pic names (master,slave)
in debugging output.


# 1.5 17-Jan-2017 krw

Nuke some whitespace that keeps poking me in the eye as I try to
steal code.


# 1.4 20-Nov-2016 mlarkin

Remove some old code that isn't needed anymore.


# 1.3 03-Oct-2016 mlarkin

add RCS tags


# 1.2 01-Sep-2016 mlarkin

change some log_warn to log_warnx and convert some integer literals to
enumerand values


# 1.1 01-Sep-2016 mlarkin

Add a set of emulated legacy devices (PIT, PIC, RTC)

discussed with stefan and deraadt


# 1.19 12-Jul-2018 mlarkin

vmm(8)/vmm(4): send a copy of the guest register state to vmd on exit,
avoiding multiple readregs ioctls back to vmm in case register content
is needed subsequently.

ok phessler


# 1.18 19-Jun-2018 reyk

knf


# 1.17 27-Apr-2018 mlarkin

vmd(8): implement vmd side of ELCR registers

ok guenther


Revision tags: OPENBSD_6_3_BASE
# 1.16 29-Nov-2017 mlarkin

vmd(8): fix broken IRR bit setting for the slave PIC. Noticed by claudio
when he tried to make a vm with 4 network interfaces.

ok claudio


Revision tags: OPENBSD_6_2_BASE
# 1.15 18-Sep-2017 dlg

protect i8259 state with a mutex.

this allows interrupts to be safely posted by multiple threads.

ok mlarkin@


# 1.14 08-May-2017 reyk

Adds functions to read and write state of devices in vmd.

This is required for implementing vmctl send and vmctl receive. vmctl
send / receive are two new options that will support snapshotting VMs
and migrating VMs from one host to another. The atomicio files are
copied from usr.bin/ssh.

Patch from Pratik Vyas; this project was undertaken at San Jose State
University along with his three teammates, Ashwin, Harshada and Siri
with mlarkin@ as the advisor.

OK mlarkin@


# 1.13 08-Apr-2017 mlarkin

implement nonspecific EOI mode for the legacy PIC

ok deraadt


Revision tags: OPENBSD_6_1_BASE
# 1.12 25-Mar-2017 mlarkin

Last bits needed to get seabios + alpine linux working. This is enough
to get started and let more people help finding and fixing bugs.

ok kettenis, deraadt


# 1.11 25-Mar-2017 mlarkin

Introduce a new function to obtain properly sized input data, and convert
i8253/i8259/mc146818 emulation to use this.


# 1.10 24-Mar-2017 reyk

Backout mlarkin's previous commit while he is away:
The newly-used function get_input_data() is missing and broke the tree.


# 1.9 24-Mar-2017 mlarkin

Last bits of cleanup for linux/seabios support in i8253/i8259 emulation
code.


# 1.8 23-Mar-2017 mlarkin

use proper return data size when doing PIC reads - don't clobber %eax
high bits.


# 1.7 19-Mar-2017 mlarkin

Handle master/slave PIC vector base properly. OpenBSD uses 0x20/0x28
(respectively). Seabios uses 0x8/0x78 and linux uses 0x30/0x38. Respond
properly to PIC vector base assignment and calculate VMX injection
vectors based on current values, instead of always assuming OpenBSD
defaults.

Needed for both seabios serial console support as well as linux guest
support. Tested on -current as is, does not break existing OpenBSD
guest support.


# 1.6 19-Mar-2017 mlarkin

Convert some log_warn into log_warnx, and provide pic names (master,slave)
in debugging output.


# 1.5 17-Jan-2017 krw

Nuke some whitespace that keeps poking me in the eye as I try to
steal code.


# 1.4 20-Nov-2016 mlarkin

Remove some old code that isn't needed anymore.


# 1.3 03-Oct-2016 mlarkin

add RCS tags


# 1.2 01-Sep-2016 mlarkin

change some log_warn to log_warnx and convert some integer literals to
enumerand values


# 1.1 01-Sep-2016 mlarkin

Add a set of emulated legacy devices (PIT, PIC, RTC)

discussed with stefan and deraadt


# 1.18 19-Jun-2018 reyk

knf


# 1.17 27-Apr-2018 mlarkin

vmd(8): implement vmd side of ELCR registers

ok guenther


Revision tags: OPENBSD_6_3_BASE
# 1.16 29-Nov-2017 mlarkin

vmd(8): fix broken IRR bit setting for the slave PIC. Noticed by claudio
when he tried to make a vm with 4 network interfaces.

ok claudio


Revision tags: OPENBSD_6_2_BASE
# 1.15 18-Sep-2017 dlg

protect i8259 state with a mutex.

this allows interrupts to be safely posted by multiple threads.

ok mlarkin@


# 1.14 08-May-2017 reyk

Adds functions to read and write state of devices in vmd.

This is required for implementing vmctl send and vmctl receive. vmctl
send / receive are two new options that will support snapshotting VMs
and migrating VMs from one host to another. The atomicio files are
copied from usr.bin/ssh.

Patch from Pratik Vyas; this project was undertaken at San Jose State
University along with his three teammates, Ashwin, Harshada and Siri
with mlarkin@ as the advisor.

OK mlarkin@


# 1.13 08-Apr-2017 mlarkin

implement nonspecific EOI mode for the legacy PIC

ok deraadt


Revision tags: OPENBSD_6_1_BASE
# 1.12 25-Mar-2017 mlarkin

Last bits needed to get seabios + alpine linux working. This is enough
to get started and let more people help finding and fixing bugs.

ok kettenis, deraadt


# 1.11 25-Mar-2017 mlarkin

Introduce a new function to obtain properly sized input data, and convert
i8253/i8259/mc146818 emulation to use this.


# 1.10 24-Mar-2017 reyk

Backout mlarkin's previous commit while he is away:
The newly-used function get_input_data() is missing and broke the tree.


# 1.9 24-Mar-2017 mlarkin

Last bits of cleanup for linux/seabios support in i8253/i8259 emulation
code.


# 1.8 23-Mar-2017 mlarkin

use proper return data size when doing PIC reads - don't clobber %eax
high bits.


# 1.7 19-Mar-2017 mlarkin

Handle master/slave PIC vector base properly. OpenBSD uses 0x20/0x28
(respectively). Seabios uses 0x8/0x78 and linux uses 0x30/0x38. Respond
properly to PIC vector base assignment and calculate VMX injection
vectors based on current values, instead of always assuming OpenBSD
defaults.

Needed for both seabios serial console support as well as linux guest
support. Tested on -current as is, does not break existing OpenBSD
guest support.


# 1.6 19-Mar-2017 mlarkin

Convert some log_warn into log_warnx, and provide pic names (master,slave)
in debugging output.


# 1.5 17-Jan-2017 krw

Nuke some whitespace that keeps poking me in the eye as I try to
steal code.


# 1.4 20-Nov-2016 mlarkin

Remove some old code that isn't needed anymore.


# 1.3 03-Oct-2016 mlarkin

add RCS tags


# 1.2 01-Sep-2016 mlarkin

change some log_warn to log_warnx and convert some integer literals to
enumerand values


# 1.1 01-Sep-2016 mlarkin

Add a set of emulated legacy devices (PIT, PIC, RTC)

discussed with stefan and deraadt


# 1.17 27-Apr-2018 mlarkin

vmd(8): implement vmd side of ELCR registers

ok guenther


Revision tags: OPENBSD_6_3_BASE
# 1.16 29-Nov-2017 mlarkin

vmd(8): fix broken IRR bit setting for the slave PIC. Noticed by claudio
when he tried to make a vm with 4 network interfaces.

ok claudio


Revision tags: OPENBSD_6_2_BASE
# 1.15 18-Sep-2017 dlg

protect i8259 state with a mutex.

this allows interrupts to be safely posted by multiple threads.

ok mlarkin@


# 1.14 08-May-2017 reyk

Adds functions to read and write state of devices in vmd.

This is required for implementing vmctl send and vmctl receive. vmctl
send / receive are two new options that will support snapshotting VMs
and migrating VMs from one host to another. The atomicio files are
copied from usr.bin/ssh.

Patch from Pratik Vyas; this project was undertaken at San Jose State
University along with his three teammates, Ashwin, Harshada and Siri
with mlarkin@ as the advisor.

OK mlarkin@


# 1.13 08-Apr-2017 mlarkin

implement nonspecific EOI mode for the legacy PIC

ok deraadt


Revision tags: OPENBSD_6_1_BASE
# 1.12 25-Mar-2017 mlarkin

Last bits needed to get seabios + alpine linux working. This is enough
to get started and let more people help finding and fixing bugs.

ok kettenis, deraadt


# 1.11 25-Mar-2017 mlarkin

Introduce a new function to obtain properly sized input data, and convert
i8253/i8259/mc146818 emulation to use this.


# 1.10 24-Mar-2017 reyk

Backout mlarkin's previous commit while he is away:
The newly-used function get_input_data() is missing and broke the tree.


# 1.9 24-Mar-2017 mlarkin

Last bits of cleanup for linux/seabios support in i8253/i8259 emulation
code.


# 1.8 23-Mar-2017 mlarkin

use proper return data size when doing PIC reads - don't clobber %eax
high bits.


# 1.7 19-Mar-2017 mlarkin

Handle master/slave PIC vector base properly. OpenBSD uses 0x20/0x28
(respectively). Seabios uses 0x8/0x78 and linux uses 0x30/0x38. Respond
properly to PIC vector base assignment and calculate VMX injection
vectors based on current values, instead of always assuming OpenBSD
defaults.

Needed for both seabios serial console support as well as linux guest
support. Tested on -current as is, does not break existing OpenBSD
guest support.


# 1.6 19-Mar-2017 mlarkin

Convert some log_warn into log_warnx, and provide pic names (master,slave)
in debugging output.


# 1.5 17-Jan-2017 krw

Nuke some whitespace that keeps poking me in the eye as I try to
steal code.


# 1.4 20-Nov-2016 mlarkin

Remove some old code that isn't needed anymore.


# 1.3 03-Oct-2016 mlarkin

add RCS tags


# 1.2 01-Sep-2016 mlarkin

change some log_warn to log_warnx and convert some integer literals to
enumerand values


# 1.1 01-Sep-2016 mlarkin

Add a set of emulated legacy devices (PIT, PIC, RTC)

discussed with stefan and deraadt


# 1.16 29-Nov-2017 mlarkin

vmd(8): fix broken IRR bit setting for the slave PIC. Noticed by claudio
when he tried to make a vm with 4 network interfaces.

ok claudio


Revision tags: OPENBSD_6_2_BASE
# 1.15 18-Sep-2017 dlg

protect i8259 state with a mutex.

this allows interrupts to be safely posted by multiple threads.

ok mlarkin@


# 1.14 08-May-2017 reyk

Adds functions to read and write state of devices in vmd.

This is required for implementing vmctl send and vmctl receive. vmctl
send / receive are two new options that will support snapshotting VMs
and migrating VMs from one host to another. The atomicio files are
copied from usr.bin/ssh.

Patch from Pratik Vyas; this project was undertaken at San Jose State
University along with his three teammates, Ashwin, Harshada and Siri
with mlarkin@ as the advisor.

OK mlarkin@


# 1.13 08-Apr-2017 mlarkin

implement nonspecific EOI mode for the legacy PIC

ok deraadt


Revision tags: OPENBSD_6_1_BASE
# 1.12 25-Mar-2017 mlarkin

Last bits needed to get seabios + alpine linux working. This is enough
to get started and let more people help finding and fixing bugs.

ok kettenis, deraadt


# 1.11 25-Mar-2017 mlarkin

Introduce a new function to obtain properly sized input data, and convert
i8253/i8259/mc146818 emulation to use this.


# 1.10 24-Mar-2017 reyk

Backout mlarkin's previous commit while he is away:
The newly-used function get_input_data() is missing and broke the tree.


# 1.9 24-Mar-2017 mlarkin

Last bits of cleanup for linux/seabios support in i8253/i8259 emulation
code.


# 1.8 23-Mar-2017 mlarkin

use proper return data size when doing PIC reads - don't clobber %eax
high bits.


# 1.7 19-Mar-2017 mlarkin

Handle master/slave PIC vector base properly. OpenBSD uses 0x20/0x28
(respectively). Seabios uses 0x8/0x78 and linux uses 0x30/0x38. Respond
properly to PIC vector base assignment and calculate VMX injection
vectors based on current values, instead of always assuming OpenBSD
defaults.

Needed for both seabios serial console support as well as linux guest
support. Tested on -current as is, does not break existing OpenBSD
guest support.


# 1.6 19-Mar-2017 mlarkin

Convert some log_warn into log_warnx, and provide pic names (master,slave)
in debugging output.


# 1.5 17-Jan-2017 krw

Nuke some whitespace that keeps poking me in the eye as I try to
steal code.


# 1.4 20-Nov-2016 mlarkin

Remove some old code that isn't needed anymore.


# 1.3 03-Oct-2016 mlarkin

add RCS tags


# 1.2 01-Sep-2016 mlarkin

change some log_warn to log_warnx and convert some integer literals to
enumerand values


# 1.1 01-Sep-2016 mlarkin

Add a set of emulated legacy devices (PIT, PIC, RTC)

discussed with stefan and deraadt