Re: [PATCH v6 19/20] cxlflash: Use new cxl_pci_read_adapter_vpd() API

2016-03-04 Thread Manoj Kumar

Fred:

Thanks for submitting this. Including linux-scsi.

Acked-by: Manoj N. Kumar 

- Manoj


On 3/4/2016 5:26 AM, Frederic Barrat wrote:

To read the adapter VPD, drivers can't rely on pci config APIs, as it
wouldn't work on powerVM. cxl introduced a new kernel API especially
for this, so start using it.

Co-authored-by: Christophe Lombard 
Signed-off-by: Frederic Barrat 
Signed-off-by: Christophe Lombard 
---
  drivers/scsi/cxlflash/common.h |  1 -
  drivers/scsi/cxlflash/main.c   | 18 ++
  2 files changed, 2 insertions(+), 17 deletions(-)

diff --git a/drivers/scsi/cxlflash/common.h b/drivers/scsi/cxlflash/common.h
index 5ada926..580f370 100644
--- a/drivers/scsi/cxlflash/common.h
+++ b/drivers/scsi/cxlflash/common.h
@@ -106,7 +106,6 @@ struct cxlflash_cfg {
atomic_t scan_host_needed;

struct cxl_afu *cxl_afu;
-   struct pci_dev *parent_dev;

atomic_t recovery_threads;
struct mutex ctx_recovery_mutex;
diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c
index f6d90ce..e04aae7 100644
--- a/drivers/scsi/cxlflash/main.c
+++ b/drivers/scsi/cxlflash/main.c
@@ -1407,7 +1407,7 @@ static int start_context(struct cxlflash_cfg *cfg)
   */
  static int read_vpd(struct cxlflash_cfg *cfg, u64 wwpn[])
  {
-   struct pci_dev *dev = cfg->parent_dev;
+   struct pci_dev *dev = cfg->dev;
int rc = 0;
int ro_start, ro_size, i, j, k;
ssize_t vpd_size;
@@ -1416,7 +1416,7 @@ static int read_vpd(struct cxlflash_cfg *cfg, u64 wwpn[])
char *wwpn_vpd_tags[NUM_FC_PORTS] = { "V5", "V6" };

/* Get the VPD data from the device */
-   vpd_size = pci_read_vpd(dev, 0, sizeof(vpd_data), vpd_data);
+   vpd_size = cxl_read_adapter_vpd(dev, vpd_data, sizeof(vpd_data));
if (unlikely(vpd_size <= 0)) {
dev_err(>dev, "%s: Unable to read VPD (size = %ld)\n",
   __func__, vpd_size);
@@ -2392,7 +2392,6 @@ static int cxlflash_probe(struct pci_dev *pdev,
  {
struct Scsi_Host *host;
struct cxlflash_cfg *cfg = NULL;
-   struct device *phys_dev;
struct dev_dependent_vals *ddv;
int rc = 0;

@@ -2458,19 +2457,6 @@ static int cxlflash_probe(struct pci_dev *pdev,

pci_set_drvdata(pdev, cfg);

-   /*
-* Use the special service provided to look up the physical
-* PCI device, since we are called on the probe of the virtual
-* PCI host bus (vphb)
-*/
-   phys_dev = cxl_get_phys_dev(pdev);
-   if (!dev_is_pci(phys_dev)) {
-   dev_err(>dev, "%s: not a pci dev\n", __func__);
-   rc = -ENODEV;
-   goto out_remove;
-   }
-   cfg->parent_dev = to_pci_dev(phys_dev);
-
cfg->cxl_afu = cxl_pci_to_afu(pdev);

rc = init_pci(cfg);



___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Re: [PATCH v6 19/20] cxlflash: Use new cxl_pci_read_adapter_vpd() API

2016-03-04 Thread Matthew R. Ochs
This patch should have also been sent to the SCSI list (included now).

Changes look fine.

Acked-by: Matthew R. Ochs 

> On Mar 4, 2016, at 5:26 AM, Frederic Barrat  
> wrote:
> 
> To read the adapter VPD, drivers can't rely on pci config APIs, as it
> wouldn't work on powerVM. cxl introduced a new kernel API especially
> for this, so start using it.
> 
> Co-authored-by: Christophe Lombard 
> Signed-off-by: Frederic Barrat 
> Signed-off-by: Christophe Lombard 
> ---
> drivers/scsi/cxlflash/common.h |  1 -
> drivers/scsi/cxlflash/main.c   | 18 ++
> 2 files changed, 2 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/scsi/cxlflash/common.h b/drivers/scsi/cxlflash/common.h
> index 5ada926..580f370 100644
> --- a/drivers/scsi/cxlflash/common.h
> +++ b/drivers/scsi/cxlflash/common.h
> @@ -106,7 +106,6 @@ struct cxlflash_cfg {
>   atomic_t scan_host_needed;
> 
>   struct cxl_afu *cxl_afu;
> - struct pci_dev *parent_dev;
> 
>   atomic_t recovery_threads;
>   struct mutex ctx_recovery_mutex;
> diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c
> index f6d90ce..e04aae7 100644
> --- a/drivers/scsi/cxlflash/main.c
> +++ b/drivers/scsi/cxlflash/main.c
> @@ -1407,7 +1407,7 @@ static int start_context(struct cxlflash_cfg *cfg)
>  */
> static int read_vpd(struct cxlflash_cfg *cfg, u64 wwpn[])
> {
> - struct pci_dev *dev = cfg->parent_dev;
> + struct pci_dev *dev = cfg->dev;
>   int rc = 0;
>   int ro_start, ro_size, i, j, k;
>   ssize_t vpd_size;
> @@ -1416,7 +1416,7 @@ static int read_vpd(struct cxlflash_cfg *cfg, u64 
> wwpn[])
>   char *wwpn_vpd_tags[NUM_FC_PORTS] = { "V5", "V6" };
> 
>   /* Get the VPD data from the device */
> - vpd_size = pci_read_vpd(dev, 0, sizeof(vpd_data), vpd_data);
> + vpd_size = cxl_read_adapter_vpd(dev, vpd_data, sizeof(vpd_data));
>   if (unlikely(vpd_size <= 0)) {
>   dev_err(>dev, "%s: Unable to read VPD (size = %ld)\n",
>  __func__, vpd_size);
> @@ -2392,7 +2392,6 @@ static int cxlflash_probe(struct pci_dev *pdev,
> {
>   struct Scsi_Host *host;
>   struct cxlflash_cfg *cfg = NULL;
> - struct device *phys_dev;
>   struct dev_dependent_vals *ddv;
>   int rc = 0;
> 
> @@ -2458,19 +2457,6 @@ static int cxlflash_probe(struct pci_dev *pdev,
> 
>   pci_set_drvdata(pdev, cfg);
> 
> - /*
> -  * Use the special service provided to look up the physical
> -  * PCI device, since we are called on the probe of the virtual
> -  * PCI host bus (vphb)
> -  */
> - phys_dev = cxl_get_phys_dev(pdev);
> - if (!dev_is_pci(phys_dev)) {
> - dev_err(>dev, "%s: not a pci dev\n", __func__);
> - rc = -ENODEV;
> - goto out_remove;
> - }
> - cfg->parent_dev = to_pci_dev(phys_dev);
> -
>   cfg->cxl_afu = cxl_pci_to_afu(pdev);
> 
>   rc = init_pci(cfg);
> -- 
> 1.9.1
> 
> ___
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Re: [PATCH v6 19/20] cxlflash: Use new cxl_pci_read_adapter_vpd() API

2016-03-04 Thread Uma Krishnan

Looks good !

Reviewed-by: Uma Krishnan 

On 3/4/2016 5:26 AM, Frederic Barrat wrote:

To read the adapter VPD, drivers can't rely on pci config APIs, as it
wouldn't work on powerVM. cxl introduced a new kernel API especially
for this, so start using it.

Co-authored-by: Christophe Lombard 
Signed-off-by: Frederic Barrat 
Signed-off-by: Christophe Lombard 
---
  drivers/scsi/cxlflash/common.h |  1 -
  drivers/scsi/cxlflash/main.c   | 18 ++
  2 files changed, 2 insertions(+), 17 deletions(-)

diff --git a/drivers/scsi/cxlflash/common.h b/drivers/scsi/cxlflash/common.h
index 5ada926..580f370 100644
--- a/drivers/scsi/cxlflash/common.h
+++ b/drivers/scsi/cxlflash/common.h
@@ -106,7 +106,6 @@ struct cxlflash_cfg {
atomic_t scan_host_needed;

struct cxl_afu *cxl_afu;
-   struct pci_dev *parent_dev;

atomic_t recovery_threads;
struct mutex ctx_recovery_mutex;
diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c
index f6d90ce..e04aae7 100644
--- a/drivers/scsi/cxlflash/main.c
+++ b/drivers/scsi/cxlflash/main.c
@@ -1407,7 +1407,7 @@ static int start_context(struct cxlflash_cfg *cfg)
   */
  static int read_vpd(struct cxlflash_cfg *cfg, u64 wwpn[])
  {
-   struct pci_dev *dev = cfg->parent_dev;
+   struct pci_dev *dev = cfg->dev;
int rc = 0;
int ro_start, ro_size, i, j, k;
ssize_t vpd_size;
@@ -1416,7 +1416,7 @@ static int read_vpd(struct cxlflash_cfg *cfg, u64 wwpn[])
char *wwpn_vpd_tags[NUM_FC_PORTS] = { "V5", "V6" };

/* Get the VPD data from the device */
-   vpd_size = pci_read_vpd(dev, 0, sizeof(vpd_data), vpd_data);
+   vpd_size = cxl_read_adapter_vpd(dev, vpd_data, sizeof(vpd_data));
if (unlikely(vpd_size <= 0)) {
dev_err(>dev, "%s: Unable to read VPD (size = %ld)\n",
   __func__, vpd_size);
@@ -2392,7 +2392,6 @@ static int cxlflash_probe(struct pci_dev *pdev,
  {
struct Scsi_Host *host;
struct cxlflash_cfg *cfg = NULL;
-   struct device *phys_dev;
struct dev_dependent_vals *ddv;
int rc = 0;

@@ -2458,19 +2457,6 @@ static int cxlflash_probe(struct pci_dev *pdev,

pci_set_drvdata(pdev, cfg);

-   /*
-* Use the special service provided to look up the physical
-* PCI device, since we are called on the probe of the virtual
-* PCI host bus (vphb)
-*/
-   phys_dev = cxl_get_phys_dev(pdev);
-   if (!dev_is_pci(phys_dev)) {
-   dev_err(>dev, "%s: not a pci dev\n", __func__);
-   rc = -ENODEV;
-   goto out_remove;
-   }
-   cfg->parent_dev = to_pci_dev(phys_dev);
-
cfg->cxl_afu = cxl_pci_to_afu(pdev);

rc = init_pci(cfg);



___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

[PATCH v6 19/20] cxlflash: Use new cxl_pci_read_adapter_vpd() API

2016-03-04 Thread Frederic Barrat
To read the adapter VPD, drivers can't rely on pci config APIs, as it
wouldn't work on powerVM. cxl introduced a new kernel API especially
for this, so start using it.

Co-authored-by: Christophe Lombard 
Signed-off-by: Frederic Barrat 
Signed-off-by: Christophe Lombard 
---
 drivers/scsi/cxlflash/common.h |  1 -
 drivers/scsi/cxlflash/main.c   | 18 ++
 2 files changed, 2 insertions(+), 17 deletions(-)

diff --git a/drivers/scsi/cxlflash/common.h b/drivers/scsi/cxlflash/common.h
index 5ada926..580f370 100644
--- a/drivers/scsi/cxlflash/common.h
+++ b/drivers/scsi/cxlflash/common.h
@@ -106,7 +106,6 @@ struct cxlflash_cfg {
atomic_t scan_host_needed;
 
struct cxl_afu *cxl_afu;
-   struct pci_dev *parent_dev;
 
atomic_t recovery_threads;
struct mutex ctx_recovery_mutex;
diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c
index f6d90ce..e04aae7 100644
--- a/drivers/scsi/cxlflash/main.c
+++ b/drivers/scsi/cxlflash/main.c
@@ -1407,7 +1407,7 @@ static int start_context(struct cxlflash_cfg *cfg)
  */
 static int read_vpd(struct cxlflash_cfg *cfg, u64 wwpn[])
 {
-   struct pci_dev *dev = cfg->parent_dev;
+   struct pci_dev *dev = cfg->dev;
int rc = 0;
int ro_start, ro_size, i, j, k;
ssize_t vpd_size;
@@ -1416,7 +1416,7 @@ static int read_vpd(struct cxlflash_cfg *cfg, u64 wwpn[])
char *wwpn_vpd_tags[NUM_FC_PORTS] = { "V5", "V6" };
 
/* Get the VPD data from the device */
-   vpd_size = pci_read_vpd(dev, 0, sizeof(vpd_data), vpd_data);
+   vpd_size = cxl_read_adapter_vpd(dev, vpd_data, sizeof(vpd_data));
if (unlikely(vpd_size <= 0)) {
dev_err(>dev, "%s: Unable to read VPD (size = %ld)\n",
   __func__, vpd_size);
@@ -2392,7 +2392,6 @@ static int cxlflash_probe(struct pci_dev *pdev,
 {
struct Scsi_Host *host;
struct cxlflash_cfg *cfg = NULL;
-   struct device *phys_dev;
struct dev_dependent_vals *ddv;
int rc = 0;
 
@@ -2458,19 +2457,6 @@ static int cxlflash_probe(struct pci_dev *pdev,
 
pci_set_drvdata(pdev, cfg);
 
-   /*
-* Use the special service provided to look up the physical
-* PCI device, since we are called on the probe of the virtual
-* PCI host bus (vphb)
-*/
-   phys_dev = cxl_get_phys_dev(pdev);
-   if (!dev_is_pci(phys_dev)) {
-   dev_err(>dev, "%s: not a pci dev\n", __func__);
-   rc = -ENODEV;
-   goto out_remove;
-   }
-   cfg->parent_dev = to_pci_dev(phys_dev);
-
cfg->cxl_afu = cxl_pci_to_afu(pdev);
 
rc = init_pci(cfg);
-- 
1.9.1

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev