[Skiboot] [PATCH 1/3] pci: Track whether a PCI device is a virtual function

Andrew Donnellan andrew.donnellan at au1.ibm.com
Thu Aug 17 16:12:23 AEST 2017


On 17/08/17 16:04, Russell Currey wrote:
> This can be checked from config space, but we will need to know this when
> restoring the PCI topology, and it is not always safe to access config
> space during this period.
> 
> Signed-off-by: Russell Currey <ruscur at russell.cc>

Reviewed-by: Andrew Donnellan <andrew.donnellan at au1.ibm.com>

> ---
>   core/pci-iov.c | 1 +
>   core/pci.c     | 1 +
>   include/pci.h  | 1 +
>   3 files changed, 3 insertions(+)
> 
> diff --git a/core/pci-iov.c b/core/pci-iov.c
> index 9d75b378..06fc4c6f 100644
> --- a/core/pci-iov.c
> +++ b/core/pci-iov.c
> @@ -175,6 +175,7 @@ static void pci_iov_init_VF(struct pci_device *pd, struct pci_device *vf)
>   {
>   	vf->is_bridge		= false;
>   	vf->is_multifunction	= false;
> +	vf->is_vf		= true;
>   	vf->dev_type		= PCIE_TYPE_ENDPOINT;
>   	vf->scan_map		= -1;
>   	vf->vdid		= pd->vdid;
> diff --git a/core/pci.c b/core/pci.c
> index 4296180a..32767db5 100644
> --- a/core/pci.c
> +++ b/core/pci.c
> @@ -273,6 +273,7 @@ static struct pci_device *pci_scan_one(struct phb *phb, struct pci_device *paren
>   	}
>   	pd->is_multifunction = !!(htype & 0x80);
>   	pd->is_bridge = (htype & 0x7f) != 0;
> +	pd->is_vf = false;
>   	pd->scan_map = 0xffffffff; /* Default */
>   	pd->primary_bus = (bdfn >> 8);
>   
> diff --git a/include/pci.h b/include/pci.h
> index 54a62fd1..884ce622 100644
> --- a/include/pci.h
> +++ b/include/pci.h
> @@ -65,6 +65,7 @@ struct pci_device {
>   	uint16_t		bdfn;
>   	bool			is_bridge;
>   	bool			is_multifunction;
> +	bool			is_vf;
>   	uint8_t			dev_type; /* PCIE */
>   	uint8_t			primary_bus;
>   	uint8_t			secondary_bus;
> 

-- 
Andrew Donnellan              OzLabs, ADL Canberra
andrew.donnellan at au1.ibm.com  IBM Australia Limited



More information about the Skiboot mailing list