diff mbox series

[V4,01/31] smartpqi: use host wide tagspace

Message ID 161540645071.19430.854884194228600277.stgit@brunhilda (mailing list archive)
State Superseded
Headers show
Series smartpqi updates | expand

Commit Message

Don Brace March 10, 2021, 8 p.m. UTC
Correct scsi-mid-layer sending more requests than
exposed host Q depth causing firmware ASSERT and lockup
issue by enabling host wide tags and setting nr_hw_queues
to 1.

Note: this also results in better performance.

Suggested-by: Ming Lei <ming.lei@redhat.com>
Suggested-by: John Gary <john.gary@huawei.com>
Reviewed-by: Scott Benesh <scott.benesh@microchip.com>
Reviewed-by: Scott Teel <scott.teel@microchip.com>
Reviewed-by: Kevin Barnett <kevin.barnett@microchip.com>
Signed-off-by: Don Brace <don.brace@microchip.com>
---
 drivers/scsi/smartpqi/smartpqi_init.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

John Garry March 10, 2021, 10:59 p.m. UTC | #1
On 10/03/2021 20:00, Don Brace wrote:
> Correct scsi-mid-layer sending more requests than
> exposed host Q depth causing firmware ASSERT and lockup
> issue by enabling host wide tags and setting nr_hw_queues
> to 1.
> 
> Note: this also results in better performance.
> 
> Suggested-by: Ming Lei <ming.lei@redhat.com>
> Suggested-by: John Gary <john.gary@huawei.com>

misspelled name

> Reviewed-by: Scott Benesh <scott.benesh@microchip.com>
> Reviewed-by: Scott Teel <scott.teel@microchip.com>
> Reviewed-by: Kevin Barnett <kevin.barnett@microchip.com>
> Signed-off-by: Don Brace <don.brace@microchip.com>
> ---
>   drivers/scsi/smartpqi/smartpqi_init.c |    3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
> index c53f456fbd09..c154e4578e55 100644
> --- a/drivers/scsi/smartpqi/smartpqi_init.c
> +++ b/drivers/scsi/smartpqi/smartpqi_init.c
> @@ -6598,7 +6598,8 @@ static int pqi_register_scsi(struct pqi_ctrl_info *ctrl_info)
>   	shost->transportt = pqi_sas_transport_template;
>   	shost->irq = pci_irq_vector(ctrl_info->pci_dev, 0);
>   	shost->unique_id = shost->irq;
> -	shost->nr_hw_queues = ctrl_info->num_queue_groups;
> +	shost->nr_hw_queues = 1;
> +	shost->host_tagset = 1;

If nr_hw_queues = 1, then there is no point in setting host_tagset.

Apart from that, I'm concerned with the issue mentioned here:

https://lore.kernel.org/linux-scsi/4bff6232-6abd-dae8-c240-07a1a40178bf@huawei.com/

Thanks,
John

>   	shost->hostdata[0] = (unsigned long)ctrl_info;
>   
>   	rc = scsi_add_host(shost, &ctrl_info->pci_dev->dev);
> 
> .
>
Don Brace March 11, 2021, 2:28 p.m. UTC | #2
-----Original Message-----
From: John Garry [mailto:john.garry@huawei.com] 
Subject: Re: [PATCH V4 01/31] smartpqi: use host wide tagspace

On 10/03/2021 20:00, Don Brace wrote:
> Correct scsi-mid-layer sending more requests than exposed host Q depth 
> causing firmware ASSERT and lockup issue by enabling host wide tags 
> and setting nr_hw_queues to 1.
>
> Note: this also results in better performance.
>
> Suggested-by: Ming Lei <ming.lei@redhat.com>
> Suggested-by: John Gary <john.gary@huawei.com>

misspelled name
Don: Sorry John, corrected in V5

> Reviewed-by: Scott Benesh <scott.benesh@microchip.com>
> Reviewed-by: Scott Teel <scott.teel@microchip.com>
> Reviewed-by: Kevin Barnett <kevin.barnett@microchip.com>
> Signed-off-by: Don Brace <don.brace@microchip.com>
> ---
>   drivers/scsi/smartpqi/smartpqi_init.c |    3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/scsi/smartpqi/smartpqi_init.c 
> b/drivers/scsi/smartpqi/smartpqi_init.c
> index c53f456fbd09..c154e4578e55 100644
> --- a/drivers/scsi/smartpqi/smartpqi_init.c
> +++ b/drivers/scsi/smartpqi/smartpqi_init.c
> @@ -6598,7 +6598,8 @@ static int pqi_register_scsi(struct pqi_ctrl_info *ctrl_info)
>       shost->transportt = pqi_sas_transport_template;
>       shost->irq = pci_irq_vector(ctrl_info->pci_dev, 0);
>       shost->unique_id = shost->irq;
> -     shost->nr_hw_queues = ctrl_info->num_queue_groups;
> +     shost->nr_hw_queues = 1;
> +     shost->host_tagset = 1;

If nr_hw_queues = 1, then there is no point in setting host_tagset.

Apart from that, I'm concerned with the issue mentioned here:

https://lore.kernel.org/linux-scsi/4bff6232-6abd-dae8-c240-07a1a40178bf@huawei.com/

Thanks,
John

Don: Thanks John, addressed in V5.


>       shost->hostdata[0] = (unsigned long)ctrl_info;
>
>       rc = scsi_add_host(shost, &ctrl_info->pci_dev->dev);
>
> .
>
diff mbox series

Patch

diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index c53f456fbd09..c154e4578e55 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -6598,7 +6598,8 @@  static int pqi_register_scsi(struct pqi_ctrl_info *ctrl_info)
 	shost->transportt = pqi_sas_transport_template;
 	shost->irq = pci_irq_vector(ctrl_info->pci_dev, 0);
 	shost->unique_id = shost->irq;
-	shost->nr_hw_queues = ctrl_info->num_queue_groups;
+	shost->nr_hw_queues = 1;
+	shost->host_tagset = 1;
 	shost->hostdata[0] = (unsigned long)ctrl_info;
 
 	rc = scsi_add_host(shost, &ctrl_info->pci_dev->dev);