summaryrefslogtreecommitdiffstats
path: root/sys/amd64
diff options
context:
space:
mode:
authorgrehan <grehan@FreeBSD.org>2013-09-07 03:33:36 +0000
committergrehan <grehan@FreeBSD.org>2013-09-07 03:33:36 +0000
commit0fa52a8a31d8983b774c9ddeb6ed7cf21e303a78 (patch)
tree6bf8605564f1f416d6842fde48f9f027be0e340d /sys/amd64
parent3b61a48b9f5477a16200438661adf4f782eec118 (diff)
downloadFreeBSD-src-0fa52a8a31d8983b774c9ddeb6ed7cf21e303a78.zip
FreeBSD-src-0fa52a8a31d8983b774c9ddeb6ed7cf21e303a78.tar.gz
Mask off the vector from the MSI-x data word.
Some o/s's set the trigger-mode level bit which results in an invalid vector and pass-thru interrupts not being delivered.
Diffstat (limited to 'sys/amd64')
-rw-r--r--sys/amd64/vmm/io/ppt.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/amd64/vmm/io/ppt.c b/sys/amd64/vmm/io/ppt.c
index 5aedaf2..878bf8a 100644
--- a/sys/amd64/vmm/io/ppt.c
+++ b/sys/amd64/vmm/io/ppt.c
@@ -568,7 +568,7 @@ ppt_setup_msix(struct vm *vm, int vcpu, int bus, int slot, int func,
return (ENXIO);
ppt->msix.arg[idx].pptdev = ppt;
- ppt->msix.arg[idx].vec = msg;
+ ppt->msix.arg[idx].vec = msg & 0xFF;
ppt->msix.arg[idx].vcpu = (addr >> 12) & 0xFF;
/* Setup the MSI-X interrupt */
OpenPOWER on IntegriCloud