diff mbox series

megasas: fix mapped frame size

Message ID 20190404121015.28634-1-pl@kamp.de (mailing list archive)
State New, archived
Headers show
Series megasas: fix mapped frame size | expand

Commit Message

Peter Lieven April 4, 2019, 12:10 p.m. UTC
the current value of 1024 bytes (16 * MFI_FRAME_SIZE) we map is not enough to hold
the maximum number of scatter gather elements we advertise. We actually need a
maximum of 2048 bytes. This is 128 max sg elements * 16 bytes (sizeof (union mfi_sgl)).

Cc: qemu-stable@nongnu.org
Signed-off-by: Peter Lieven <pl@kamp.de>
---
 hw/scsi/megasas.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Hannes Reinecke April 4, 2019, 2:24 p.m. UTC | #1
On 4/4/19 2:10 PM, Peter Lieven wrote:
> the current value of 1024 bytes (16 * MFI_FRAME_SIZE) we map is not enough to hold
> the maximum number of scatter gather elements we advertise. We actually need a
> maximum of 2048 bytes. This is 128 max sg elements * 16 bytes (sizeof (union mfi_sgl)).
> 
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Peter Lieven <pl@kamp.de>
> ---
>   hw/scsi/megasas.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
> index a56317e026..5ad762de23 100644
> --- a/hw/scsi/megasas.c
> +++ b/hw/scsi/megasas.c
> @@ -477,7 +477,7 @@ static MegasasCmd *megasas_enqueue_frame(MegasasState *s,
>   {
>       PCIDevice *pcid = PCI_DEVICE(s);
>       MegasasCmd *cmd = NULL;
> -    int frame_size = MFI_FRAME_SIZE * 16;
> +    int frame_size = MEGASAS_MAX_SGE * sizeof(union mfi_sgl);
>       hwaddr frame_size_p = frame_size;
>       unsigned long index;
>   
> 
Indeed.

Reviewed-by: Hannes Reinecke <hare@suse.com>

Cheers,

Hannes
Michael Roth April 8, 2019, 9:57 p.m. UTC | #2
Quoting Peter Lieven (2019-04-04 07:10:15)
> the current value of 1024 bytes (16 * MFI_FRAME_SIZE) we map is not enough to hold
> the maximum number of scatter gather elements we advertise. We actually need a
> maximum of 2048 bytes. This is 128 max sg elements * 16 bytes (sizeof (union mfi_sgl)).
> 
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Peter Lieven <pl@kamp.de>

Is there any chance of getting this in for v4.0.0-rc3 tomorrow? Also
hoping to pull it in for v3.0.1.

> ---
>  hw/scsi/megasas.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
> index a56317e026..5ad762de23 100644
> --- a/hw/scsi/megasas.c
> +++ b/hw/scsi/megasas.c
> @@ -477,7 +477,7 @@ static MegasasCmd *megasas_enqueue_frame(MegasasState *s,
>  {
>      PCIDevice *pcid = PCI_DEVICE(s);
>      MegasasCmd *cmd = NULL;
> -    int frame_size = MFI_FRAME_SIZE * 16;
> +    int frame_size = MEGASAS_MAX_SGE * sizeof(union mfi_sgl);
>      hwaddr frame_size_p = frame_size;
>      unsigned long index;
> 
> -- 
> 2.17.1
> 
> 
>
diff mbox series

Patch

diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
index a56317e026..5ad762de23 100644
--- a/hw/scsi/megasas.c
+++ b/hw/scsi/megasas.c
@@ -477,7 +477,7 @@  static MegasasCmd *megasas_enqueue_frame(MegasasState *s,
 {
     PCIDevice *pcid = PCI_DEVICE(s);
     MegasasCmd *cmd = NULL;
-    int frame_size = MFI_FRAME_SIZE * 16;
+    int frame_size = MEGASAS_MAX_SGE * sizeof(union mfi_sgl);
     hwaddr frame_size_p = frame_size;
     unsigned long index;