diff options
author | neel <neel@FreeBSD.org> | 2012-10-11 19:28:07 +0000 |
---|---|---|
committer | neel <neel@FreeBSD.org> | 2012-10-11 19:28:07 +0000 |
commit | d09cf38e2541aaf20c762b633d757f620e4ae745 (patch) | |
tree | 2534d1165f2872381d1a8a1908a360fcef5b4186 /sys/amd64/vmm/io | |
parent | 364c9ec6f987023beee32dfea2f46fe9041895e2 (diff) | |
download | FreeBSD-src-d09cf38e2541aaf20c762b633d757f620e4ae745.zip FreeBSD-src-d09cf38e2541aaf20c762b633d757f620e4ae745.tar.gz |
Deliver the MSI to the correct guest virtual cpu.
Prior to this change the MSI was being delivered unconditionally to vcpu 0
regardless of how the guest programmed the MSI delivery.
Diffstat (limited to 'sys/amd64/vmm/io')
-rw-r--r-- | sys/amd64/vmm/io/ppt.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/sys/amd64/vmm/io/ppt.c b/sys/amd64/vmm/io/ppt.c index e81fdbc..d6fef9a 100644 --- a/sys/amd64/vmm/io/ppt.c +++ b/sys/amd64/vmm/io/ppt.c @@ -71,8 +71,6 @@ static struct pptdev { struct vm_memory_segment mmio[MAX_MMIOSEGS]; struct { int num_msgs; /* guest state */ - int vector; - int vcpu; int startrid; /* host state */ struct resource *res[MAX_MSIMSGS]; @@ -478,8 +476,6 @@ ppt_setup_msi(struct vm *vm, int vcpu, int bus, int slot, int func, } } - ppt->msi.vector = vector; - ppt->msi.vcpu = destcpu; ppt->msi.startrid = startrid; /* @@ -497,6 +493,7 @@ ppt_setup_msi(struct vm *vm, int vcpu, int bus, int slot, int func, ppt->msi.arg[i].pptdev = ppt; ppt->msi.arg[i].vec = vector + i; + ppt->msi.arg[i].vcpu = destcpu; error = bus_setup_intr(ppt->dev, ppt->msi.res[i], INTR_TYPE_NET | INTR_MPSAFE, |