linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 8/9] scsi/pm8001: use pdev->pm_cap instead of pci_find_capability(..,PCI_CAP_ID_PM)
@ 2013-06-18  8:23 Yijing Wang
  2013-06-18  9:25 ` lindar_liu
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Yijing Wang @ 2013-06-18  8:23 UTC (permalink / raw)
  To: James E.J. Bottomley
  Cc: linux-kernel, Hanjun Guo, jiang.liu, Yijing Wang, xjtuwjp,
	lindar_liu, linux-scsi

Pci core has been saved pm cap register offset by pdev->pm_cap in pci_pm_init()
in init path. So we can use pdev->pm_cap instead of using
pci_find_capability(pdev, PCI_CAP_ID_PM) for better performance and simplified code.

Signed-off-by: Yijing Wang <wangyijing@huawei.com>
Cc: xjtuwjp@gmail.com
Cc: lindar_liu@usish.com
Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/scsi/pm8001/pm8001_init.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
index e4b9bc7..3861aa1 100644
--- a/drivers/scsi/pm8001/pm8001_init.c
+++ b/drivers/scsi/pm8001/pm8001_init.c
@@ -912,14 +912,13 @@ static int pm8001_pci_suspend(struct pci_dev *pdev, pm_message_t state)
 {
 	struct sas_ha_struct *sha = pci_get_drvdata(pdev);
 	struct pm8001_hba_info *pm8001_ha;
-	int i , pos;
+	int i;
 	u32 device_state;
 	pm8001_ha = sha->lldd_ha;
 	flush_workqueue(pm8001_wq);
 	scsi_block_requests(pm8001_ha->shost);
-	pos = pci_find_capability(pdev, PCI_CAP_ID_PM);
-	if (pos == 0) {
-		printk(KERN_ERR " PCI PM not supported\n");
+	if (!pdev->pm_cap) {
+		dev_err(&pdev->dev, " PCI PM not supported\n");
 		return -ENODEV;
 	}
 	PM8001_CHIP_DISP->interrupt_disable(pm8001_ha, 0xFF);
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* RE: [PATCH 8/9] scsi/pm8001: use pdev->pm_cap instead of pci_find_capability(..,PCI_CAP_ID_PM)
  2013-06-18  8:23 [PATCH 8/9] scsi/pm8001: use pdev->pm_cap instead of pci_find_capability(..,PCI_CAP_ID_PM) Yijing Wang
@ 2013-06-18  9:25 ` lindar_liu
  2013-06-25 12:07 ` Yijing Wang
  2013-06-26  9:33 ` Jack Wang
  2 siblings, 0 replies; 6+ messages in thread
From: lindar_liu @ 2013-06-18  9:25 UTC (permalink / raw)
  To: 'Yijing Wang', 'James E.J. Bottomley'
  Cc: linux-kernel, 'Hanjun Guo', jiang.liu, xjtuwjp,
	linux-scsi

It works, thanks.

Lindar.

-----Original Message-----
From: Yijing Wang [mailto:wangyijing@huawei.com] 
Sent: Tuesday, June 18, 2013 4:24 PM
To: James E.J. Bottomley
Cc: linux-kernel@vger.kernel.org; Hanjun Guo; jiang.liu@huawei.com; Yijing
Wang; xjtuwjp@gmail.com; lindar_liu@usish.com; linux-scsi@vger.kernel.org
Subject: [PATCH 8/9] scsi/pm8001: use pdev->pm_cap instead of
pci_find_capability(..,PCI_CAP_ID_PM)

Pci core has been saved pm cap register offset by pdev->pm_cap in
pci_pm_init() in init path. So we can use pdev->pm_cap instead of using
pci_find_capability(pdev, PCI_CAP_ID_PM) for better performance and
simplified code.

Signed-off-by: Yijing Wang <wangyijing@huawei.com>
Cc: xjtuwjp@gmail.com
Cc: lindar_liu@usish.com
Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/scsi/pm8001/pm8001_init.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/pm8001/pm8001_init.c
b/drivers/scsi/pm8001/pm8001_init.c
index e4b9bc7..3861aa1 100644
--- a/drivers/scsi/pm8001/pm8001_init.c
+++ b/drivers/scsi/pm8001/pm8001_init.c
@@ -912,14 +912,13 @@ static int pm8001_pci_suspend(struct pci_dev *pdev,
pm_message_t state)  {
 	struct sas_ha_struct *sha = pci_get_drvdata(pdev);
 	struct pm8001_hba_info *pm8001_ha;
-	int i , pos;
+	int i;
 	u32 device_state;
 	pm8001_ha = sha->lldd_ha;
 	flush_workqueue(pm8001_wq);
 	scsi_block_requests(pm8001_ha->shost);
-	pos = pci_find_capability(pdev, PCI_CAP_ID_PM);
-	if (pos == 0) {
-		printk(KERN_ERR " PCI PM not supported\n");
+	if (!pdev->pm_cap) {
+		dev_err(&pdev->dev, " PCI PM not supported\n");
 		return -ENODEV;
 	}
 	PM8001_CHIP_DISP->interrupt_disable(pm8001_ha, 0xFF);
--
1.7.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 8/9] scsi/pm8001: use pdev->pm_cap instead of pci_find_capability(..,PCI_CAP_ID_PM)
  2013-06-18  8:23 [PATCH 8/9] scsi/pm8001: use pdev->pm_cap instead of pci_find_capability(..,PCI_CAP_ID_PM) Yijing Wang
  2013-06-18  9:25 ` lindar_liu
@ 2013-06-25 12:07 ` Yijing Wang
  2013-06-26  9:33 ` Jack Wang
  2 siblings, 0 replies; 6+ messages in thread
From: Yijing Wang @ 2013-06-25 12:07 UTC (permalink / raw)
  To: James E.J. Bottomley
  Cc: Yijing Wang, linux-kernel, xjtuwjp, lindar_liu, linux-scsi

Hi,
  Any comments?

On 2013/6/18 16:23, Yijing Wang wrote:
> Pci core has been saved pm cap register offset by pdev->pm_cap in pci_pm_init()
> in init path. So we can use pdev->pm_cap instead of using
> pci_find_capability(pdev, PCI_CAP_ID_PM) for better performance and simplified code.
> 
> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
> Cc: xjtuwjp@gmail.com
> Cc: lindar_liu@usish.com
> Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
> Cc: linux-scsi@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> ---
>  drivers/scsi/pm8001/pm8001_init.c |    7 +++----
>  1 files changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
> index e4b9bc7..3861aa1 100644
> --- a/drivers/scsi/pm8001/pm8001_init.c
> +++ b/drivers/scsi/pm8001/pm8001_init.c
> @@ -912,14 +912,13 @@ static int pm8001_pci_suspend(struct pci_dev *pdev, pm_message_t state)
>  {
>  	struct sas_ha_struct *sha = pci_get_drvdata(pdev);
>  	struct pm8001_hba_info *pm8001_ha;
> -	int i , pos;
> +	int i;
>  	u32 device_state;
>  	pm8001_ha = sha->lldd_ha;
>  	flush_workqueue(pm8001_wq);
>  	scsi_block_requests(pm8001_ha->shost);
> -	pos = pci_find_capability(pdev, PCI_CAP_ID_PM);
> -	if (pos == 0) {
> -		printk(KERN_ERR " PCI PM not supported\n");
> +	if (!pdev->pm_cap) {
> +		dev_err(&pdev->dev, " PCI PM not supported\n");
>  		return -ENODEV;
>  	}
>  	PM8001_CHIP_DISP->interrupt_disable(pm8001_ha, 0xFF);
> 


-- 
Thanks!
Yijing

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 8/9] scsi/pm8001: use pdev->pm_cap instead of pci_find_capability(..,PCI_CAP_ID_PM)
@ 2013-06-26  1:13 Yijing Wang
  0 siblings, 0 replies; 6+ messages in thread
From: Yijing Wang @ 2013-06-26  1:13 UTC (permalink / raw)
  To: Andrew Morton
  Cc: linux-kernel, Yijing Wang, xjtuwjp, lindar_liu,
	James E.J. Bottomley, linux-scsi

Pci core has been saved pm cap register offset by pdev->pm_cap in pci_pm_init()
in init path. So we can use pdev->pm_cap instead of using
pci_find_capability(pdev, PCI_CAP_ID_PM) for better performance and simplified code.

Signed-off-by: Yijing Wang <wangyijing@huawei.com>
Cc: xjtuwjp@gmail.com
Cc: lindar_liu@usish.com
Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
Cc: linux-scsi@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/scsi/pm8001/pm8001_init.c |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
index e4b9bc7..3861aa1 100644
--- a/drivers/scsi/pm8001/pm8001_init.c
+++ b/drivers/scsi/pm8001/pm8001_init.c
@@ -912,14 +912,13 @@ static int pm8001_pci_suspend(struct pci_dev *pdev, pm_message_t state)
 {
 	struct sas_ha_struct *sha = pci_get_drvdata(pdev);
 	struct pm8001_hba_info *pm8001_ha;
-	int i , pos;
+	int i;
 	u32 device_state;
 	pm8001_ha = sha->lldd_ha;
 	flush_workqueue(pm8001_wq);
 	scsi_block_requests(pm8001_ha->shost);
-	pos = pci_find_capability(pdev, PCI_CAP_ID_PM);
-	if (pos == 0) {
-		printk(KERN_ERR " PCI PM not supported\n");
+	if (!pdev->pm_cap) {
+		dev_err(&pdev->dev, " PCI PM not supported\n");
 		return -ENODEV;
 	}
 	PM8001_CHIP_DISP->interrupt_disable(pm8001_ha, 0xFF);
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 8/9] scsi/pm8001: use pdev->pm_cap instead of pci_find_capability(..,PCI_CAP_ID_PM)
  2013-06-18  8:23 [PATCH 8/9] scsi/pm8001: use pdev->pm_cap instead of pci_find_capability(..,PCI_CAP_ID_PM) Yijing Wang
  2013-06-18  9:25 ` lindar_liu
  2013-06-25 12:07 ` Yijing Wang
@ 2013-06-26  9:33 ` Jack Wang
  2013-06-26  9:46   ` Yijing Wang
  2 siblings, 1 reply; 6+ messages in thread
From: Jack Wang @ 2013-06-26  9:33 UTC (permalink / raw)
  To: Yijing Wang
  Cc: James E.J. Bottomley, linux-kernel, Hanjun Guo, jiang.liu,
	lindar_liu, linux-scsi

On 06/18/2013 10:23 AM, Yijing Wang wrote:
> Pci core has been saved pm cap register offset by pdev->pm_cap in pci_pm_init()
> in init path. So we can use pdev->pm_cap instead of using
> pci_find_capability(pdev, PCI_CAP_ID_PM) for better performance and simplified code.
> 
I think Lindar already replied to you, and tested it on hardware.

So you can add her:
Acked-by or Tested-by


Regards,
Jack
> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
> Cc: xjtuwjp@gmail.com
> Cc: lindar_liu@usish.com
> Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
> Cc: linux-scsi@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> ---
>  drivers/scsi/pm8001/pm8001_init.c |    7 +++----
>  1 files changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
> index e4b9bc7..3861aa1 100644
> --- a/drivers/scsi/pm8001/pm8001_init.c
> +++ b/drivers/scsi/pm8001/pm8001_init.c
> @@ -912,14 +912,13 @@ static int pm8001_pci_suspend(struct pci_dev *pdev, pm_message_t state)
>  {
>  	struct sas_ha_struct *sha = pci_get_drvdata(pdev);
>  	struct pm8001_hba_info *pm8001_ha;
> -	int i , pos;
> +	int i;
>  	u32 device_state;
>  	pm8001_ha = sha->lldd_ha;
>  	flush_workqueue(pm8001_wq);
>  	scsi_block_requests(pm8001_ha->shost);
> -	pos = pci_find_capability(pdev, PCI_CAP_ID_PM);
> -	if (pos == 0) {
> -		printk(KERN_ERR " PCI PM not supported\n");
> +	if (!pdev->pm_cap) {
> +		dev_err(&pdev->dev, " PCI PM not supported\n");
>  		return -ENODEV;
>  	}
>  	PM8001_CHIP_DISP->interrupt_disable(pm8001_ha, 0xFF);
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 8/9] scsi/pm8001: use pdev->pm_cap instead of pci_find_capability(..,PCI_CAP_ID_PM)
  2013-06-26  9:33 ` Jack Wang
@ 2013-06-26  9:46   ` Yijing Wang
  0 siblings, 0 replies; 6+ messages in thread
From: Yijing Wang @ 2013-06-26  9:46 UTC (permalink / raw)
  To: Jack Wang
  Cc: James E.J. Bottomley, linux-kernel, Hanjun Guo, jiang.liu,
	lindar_liu, linux-scsi

On 2013/6/26 17:33, Jack Wang wrote:
> On 06/18/2013 10:23 AM, Yijing Wang wrote:
>> Pci core has been saved pm cap register offset by pdev->pm_cap in pci_pm_init()
>> in init path. So we can use pdev->pm_cap instead of using
>> pci_find_capability(pdev, PCI_CAP_ID_PM) for better performance and simplified code.
>>
> I think Lindar already replied to you, and tested it on hardware.

I didn't receive the reply, I will check my email client, maybe I lose some emails.
Jack, Lindar thank you very much.

> 
> So you can add her:
> Acked-by or Tested-by

ok, I will add them.


> 
> 
> Regards,
> Jack
>> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
>> Cc: xjtuwjp@gmail.com
>> Cc: lindar_liu@usish.com
>> Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
>> Cc: linux-scsi@vger.kernel.org
>> Cc: linux-kernel@vger.kernel.org
>> ---
>>  drivers/scsi/pm8001/pm8001_init.c |    7 +++----
>>  1 files changed, 3 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
>> index e4b9bc7..3861aa1 100644
>> --- a/drivers/scsi/pm8001/pm8001_init.c
>> +++ b/drivers/scsi/pm8001/pm8001_init.c
>> @@ -912,14 +912,13 @@ static int pm8001_pci_suspend(struct pci_dev *pdev, pm_message_t state)
>>  {
>>  	struct sas_ha_struct *sha = pci_get_drvdata(pdev);
>>  	struct pm8001_hba_info *pm8001_ha;
>> -	int i , pos;
>> +	int i;
>>  	u32 device_state;
>>  	pm8001_ha = sha->lldd_ha;
>>  	flush_workqueue(pm8001_wq);
>>  	scsi_block_requests(pm8001_ha->shost);
>> -	pos = pci_find_capability(pdev, PCI_CAP_ID_PM);
>> -	if (pos == 0) {
>> -		printk(KERN_ERR " PCI PM not supported\n");
>> +	if (!pdev->pm_cap) {
>> +		dev_err(&pdev->dev, " PCI PM not supported\n");
>>  		return -ENODEV;
>>  	}
>>  	PM8001_CHIP_DISP->interrupt_disable(pm8001_ha, 0xFF);
>>
> 
> 
> .
> 


-- 
Thanks!
Yijing

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2013-06-26  9:46 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-18  8:23 [PATCH 8/9] scsi/pm8001: use pdev->pm_cap instead of pci_find_capability(..,PCI_CAP_ID_PM) Yijing Wang
2013-06-18  9:25 ` lindar_liu
2013-06-25 12:07 ` Yijing Wang
2013-06-26  9:33 ` Jack Wang
2013-06-26  9:46   ` Yijing Wang
  -- strict thread matches above, loose matches on Subject: below --
2013-06-26  1:13 Yijing Wang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).