lkml.org 
[lkml]   [2019]   [Jun]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH 2/2] PCI/IOV: Assume SR-IOV VFs support extended config space.
From
Date
Hi,

On 6/13/19 3:57 PM, Alex Williamson wrote:
> The SR-IOV specification requires both PFs and VFs to implement a PCIe
> capability. Generally this is sufficient to assume extended config
> space is present, but we generally also perform additional tests to
> make sure the extended config space is reachable and not simply an
> alias of standard config space. For a VF to exist extended config
> space must be accessible on the PF, therefore we can also assume it to
> be accessible on the VF. This enables a micro performance
> optimization previously implemented in commit 975bb8b4dc93 ("PCI/IOV:
> Use VF0 cached config space size for other VFs") to speed up probing
> of VFs.
>
> Cc: KarimAllah Ahmed <karahmed@amazon.de>
> Cc: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
> Cc: Hao Zheng <yinhe@linux.alibaba.com>
> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
> ---
> drivers/pci/probe.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
> index a3a3c6b28343..439244ff8f09 100644
> --- a/drivers/pci/probe.c
> +++ b/drivers/pci/probe.c
> @@ -1561,6 +1561,21 @@ int pci_cfg_space_size(struct pci_dev *dev)
> u32 status;
> u16 class;
>
> +#ifdef CONFIG_PCI_IOV
> + /*
> + * Per the SR-IOV specification (rev 1.1, sec 3.5), VFs are required to
> + * implement a PCIe capability and therefore must implement extended
> + * config space. We can skip the NO_EXTCFG test below and the
> + * reachability/aliasing test in pci_cfg_space_size_ext() by virtue of
> + * the fact that the SR-IOV capability on the PF resides in extended
> + * config space and must be accessible and non-aliased to have enabled
> + * support for this VF. This is a micro performance optimization for
> + * systems supporting many VFs.
> + */
> + if (dev->is_virtfn)
> + return PCI_CFG_SPACE_EXP_SIZE;
> +#endif

It looks good to me.

Reviewed-by: Kuppuswamy Sathyanarayanan
<sathyanarayanan.kuppuswamy@linux.intel.com>

> +
> if (dev->bus->bus_flags & PCI_BUS_FLAGS_NO_EXTCFG)
> return PCI_CFG_SPACE_SIZE;
>
>
>
--
Sathyanarayanan Kuppuswamy
Linux kernel developer

\
 
 \ /
  Last update: 2019-06-19 21:58    [W:0.074 / U:0.764 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site