Displaying 2 results from an estimated 2 matches for "msixtbl_read".
2012 Mar 24
0
[xen-4.0-testing test] 12413: regressions - FAIL
...rtable)
- MAX_MSIX_TABLE_PAGES was also off by one (failing to account for a
non-zero table offset); this was also affecting host MSI-X code
- struct msixtbl_entry''s table_flags[] was one element larger than
necessary due to improper open-coding of BITS_TO_LONGS()
- msixtbl_read() unconditionally accessed the physical table, even
though the data was only needed in a quarter of all cases
- various calculations were done unnecessarily for both of the rather
distinct code paths in msixtbl_read()
Additionally it is unclear on what basis MAX_MSIX_ACC_EN...
2013 May 08
11
[PATCH 1/2] xen, libxc: init msix addr/data with value from qemu via hypercall
...@@ -168,6 +168,7 @@ struct msixtbl_entry
struct {
uint32_t msi_ad[3]; /* Shadow of address low, high and data */
} gentries[MAX_MSIX_ACC_ENTRIES];
+ unsigned long table_shadow[BITS_TO_LONGS(MAX_MSIX_ACC_ENTRIES)];
struct rcu_head rcu;
};
@@ -229,6 +230,9 @@ static int msixtbl_read(
nr_entry = (address - entry->gtable) / PCI_MSIX_ENTRY_SIZE;
if ( nr_entry >= MAX_MSIX_ACC_ENTRIES )
goto out;
+ if( !test_bit(nr_entry, entry->table_shadow) )
+ goto out;
+
index = offset / sizeof(uint32_t);
*pval = entry-...