OSDN Git Service

hw/scsi/megasas: Use uint32_t for reply queue head/tail values
authorPhilippe Mathieu-Daudé <philmd@redhat.com>
Fri, 17 Dec 2021 21:43:05 +0000 (22:43 +0100)
committerPhilippe Mathieu-Daudé <philmd@redhat.com>
Thu, 30 Dec 2021 16:16:32 +0000 (17:16 +0100)
commit41d5e8da3d5e0a143a9fb397c9f34707ec544997
tree136741187a2433305f87f44a711e97a27276dd99
parentd5a9f352896fe43183ef01072b374e89a3488315
hw/scsi/megasas: Use uint32_t for reply queue head/tail values

While the reply queue values fit in 16-bit, they are accessed
as 32-bit:

  661:    s->reply_queue_head = ldl_le_pci_dma(pcid, s->producer_pa);
  662:    s->reply_queue_head %= MEGASAS_MAX_FRAMES;
  663:    s->reply_queue_tail = ldl_le_pci_dma(pcid, s->consumer_pa);
  664:    s->reply_queue_tail %= MEGASAS_MAX_FRAMES;

Having:

  41:#define MEGASAS_MAX_FRAMES 2048         /* Firmware limit at 65535 */

In order to update the ld/st*_pci_dma() API to pass the address
of the value to access, it is simpler to have the head/tail declared
as 32-bit values. Replace the uint16_t by uint32_t, wasting 4 bytes in
the MegasasState structure.

Acked-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20211223115554.3155328-20-philmd@redhat.com>
hw/scsi/megasas.c
hw/scsi/trace-events