[PATCH] cxl: Ignore probes for virtual afu pci devices
Frederic Barrat
fbarrat at linux.vnet.ibm.com
Thu Mar 3 03:09:48 AEDT 2016
Hi Vaibhav,
Looks ok to me.
Reviewed-by: fbarrat at linux.vnet.ibm.com
Fred
Le 29/02/2016 06:40, Vaibhav Jain a écrit :
> Add a check at the beginning of cxl_probe function to ignore virtual pci
> devices created for each afu registered. This fixes the the errors
> messages logged about missing CXL vsec, when cxl probe is unable to
> find necessary vsec entries in device pci config space. The error
> message logged are of the form :
>
> cxl-pci 0004:00:00.0: ABORTING: CXL VSEC not found!
> cxl-pci 0004:00:00.0: cxl_init_adapter failed: -19
>
> Cc: Ian Munsie <imunsie at au1.ibm.com>
> Cc: Frederic Barrat <fbarrat at linux.vnet.ibm.com>
> Signed-off-by: Vaibhav Jain <vaibhav at linux.vnet.ibm.com>
> ---
> drivers/misc/cxl/cxl.h | 2 ++
> drivers/misc/cxl/pci.c | 5 +++++
> drivers/misc/cxl/vphb.c | 9 +++++++++
> 3 files changed, 16 insertions(+)
>
> diff --git a/drivers/misc/cxl/cxl.h b/drivers/misc/cxl/cxl.h
> index a521bc7..68d39f5 100644
> --- a/drivers/misc/cxl/cxl.h
> +++ b/drivers/misc/cxl/cxl.h
> @@ -764,4 +764,6 @@ unsigned int afu_poll(struct file *file, struct poll_table_struct *poll);
> ssize_t afu_read(struct file *file, char __user *buf, size_t count, loff_t *off);
> extern const struct file_operations afu_fops;
>
> +/* check if the given pci_dev is on the the cxl vphb bus */
> +bool cxl_pci_is_vphb_device(struct pci_dev *dev);
> #endif
> diff --git a/drivers/misc/cxl/pci.c b/drivers/misc/cxl/pci.c
> index 4c1903f..2f219c1 100644
> --- a/drivers/misc/cxl/pci.c
> +++ b/drivers/misc/cxl/pci.c
> @@ -1278,6 +1278,11 @@ static int cxl_probe(struct pci_dev *dev, const struct pci_device_id *id)
> int slice;
> int rc;
>
> + if (cxl_pci_is_vphb_device(dev)) {
> + dev_dbg(&dev->dev, "cxl_init_adapter: Ignoring cxl vphb device\n");
> + return -ENODEV;
> + }
> +
> if (cxl_verbose)
> dump_cxl_config_space(dev);
>
> diff --git a/drivers/misc/cxl/vphb.c b/drivers/misc/cxl/vphb.c
> index cbd4331..e76a42a 100644
> --- a/drivers/misc/cxl/vphb.c
> +++ b/drivers/misc/cxl/vphb.c
> @@ -296,6 +296,15 @@ void cxl_pci_vphb_remove(struct cxl_afu *afu)
> pcibios_free_controller(phb);
> }
>
> +bool cxl_pci_is_vphb_device(struct pci_dev *dev)
> +{
> + struct pci_controller *phb;
> +
> + phb = pci_bus_to_host(dev->bus);
> +
> + return (phb->ops == &cxl_pcie_pci_ops);
> +}
> +
> struct cxl_afu *cxl_pci_to_afu(struct pci_dev *dev)
> {
> struct pci_controller *phb;
>
More information about the Linuxppc-dev
mailing list