There is a mistake to get the msix entry number. It should be
divide instead of modulus.
Signed-off-by: Yang Zhang <yang.zhang@intel.com>
Signed-off-by: Qing He <qing.he@intel.com>
diff -r 112680f620bf xen/arch/x86/hvm/vmsi.c
--- a/xen/arch/x86/hvm/vmsi.c Mon Jun 08 18:23:57 2009 +0100
+++ b/xen/arch/x86/hvm/vmsi.c Mon Jul 06 13:06:03 2009 +0800
@@ -290,7 +290,7 @@
goto out;
entry = msixtbl_find_entry(v, address);
- nr_entry = (address - entry->gtable) % PCI_MSIX_ENTRY_SIZE;
+ nr_entry = (address - entry->gtable) / PCI_MSIX_ENTRY_SIZE;
offset = address & (PCI_MSIX_ENTRY_SIZE - 1);
if ( offset != PCI_MSIX_ENTRY_VECTOR_CTRL_OFFSET)
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel