Commit ee8222fe authored by Wei Yang's avatar Wei Yang Committed by Michael Ellerman

powerpc/powernv: use one M64 BAR in Single PE mode for one VF BAR

In current implementation, when VF BAR is bigger than 64MB, it uses 4 M64
BARs in Single PE mode to cover the number of VFs required to be enabled.
By doing so, several VFs would be in one VF Group and leads to interference
between VFs in the same group.

And in this patch, m64_wins is renamed to m64_map, which means index number
of the M64 BAR used to map the VF BAR. Based on Gavin's comments. Also
makes sure the VF BAR size is bigger than 32MB when M64 BAR is used in
Single PE mode.

This patch changes the design by using one M64 BAR in Single PE mode for
one VF BAR. This gives absolute isolation for VFs.
Signed-off-by: default avatarWei Yang <weiyang@linux.vnet.ibm.com>
Reviewed-by: default avatarGavin Shan <gwshan@linux.vnet.ibm.com>
Acked-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 7fbe7a93
...@@ -216,10 +216,9 @@ struct pci_dn { ...@@ -216,10 +216,9 @@ struct pci_dn {
u16 vfs_expanded; /* number of VFs IOV BAR expanded */ u16 vfs_expanded; /* number of VFs IOV BAR expanded */
u16 num_vfs; /* number of VFs enabled*/ u16 num_vfs; /* number of VFs enabled*/
int offset; /* PE# for the first VF PE */ int offset; /* PE# for the first VF PE */
#define M64_PER_IOV 4 bool m64_single_mode; /* Use M64 BAR in Single Mode */
int m64_per_iov;
#define IODA_INVALID_M64 (-1) #define IODA_INVALID_M64 (-1)
int m64_wins[PCI_SRIOV_NUM_BARS][M64_PER_IOV]; int (*m64_map)[PCI_SRIOV_NUM_BARS];
#endif /* CONFIG_PCI_IOV */ #endif /* CONFIG_PCI_IOV */
#endif #endif
struct list_head child_list; struct list_head child_list;
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment