Re: [PATCH v2 01/16] esp.c: replace cmdfifo use of esp_fifo_pop_buf() in do_command_phase()

2024-03-13 Thread Philippe Mathieu-Daudé

On 13/3/24 22:08, Mark Cave-Ayland wrote:

On 13/03/2024 11:03, Philippe Mathieu-Daudé wrote:


On 13/3/24 09:57, Mark Cave-Ayland wrote:
The aim is to restrict the esp_fifo_*() functions so that they only 
operate on
the hardware FIFO. When reading from cmdfifo in do_command_phase() 
use the

underlying Fifo8 functions directly.

Signed-off-by: Mark Cave-Ayland 
---
  hw/scsi/esp.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c
index 590ff99744..f8230c74b3 100644
--- a/hw/scsi/esp.c
+++ b/hw/scsi/esp.c
@@ -265,7 +265,7 @@ static void esp_do_nodma(ESPState *s);
  static void do_command_phase(ESPState *s)
  {
-    uint32_t cmdlen;
+    uint32_t cmdlen, n;
  int32_t datalen;
  SCSIDevice *current_lun;
  uint8_t buf[ESP_CMDFIFO_SZ];
@@ -275,7 +275,7 @@ static void do_command_phase(ESPState *s)
  if (!cmdlen || !s->current_dev) {
  return;
  }
-    esp_fifo_pop_buf(>cmdfifo, buf, cmdlen);
+    memcpy(buf, fifo8_pop_buf(>cmdfifo, cmdlen, ), cmdlen);


'n' is unused, use NULL?


I was sure I had tried that before and it had failed, but I see that you 
made it work with NULL in commit cd04033dbe ("util/fifo8: Allow 
fifo8_pop_buf() to not populate popped length") - thanks!


Ah!

So using NULL in patches 1 and 2:
Reviewed-by: Philippe Mathieu-Daudé 

I'll make the change for v3, but I'll wait a couple of days first to see 
if there are any further comments, in particular R-B tags for patches 10 
and 11.


I still have them in my TOREVIEW queue and need to digest them.



  current_lun = scsi_device_find(>bus, 0, s->current_dev->id, 
s->lun);

  if (!current_lun) {



ATB,

Mark.






Re: [PATCH v2 01/16] esp.c: replace cmdfifo use of esp_fifo_pop_buf() in do_command_phase()

2024-03-13 Thread Mark Cave-Ayland

On 13/03/2024 11:03, Philippe Mathieu-Daudé wrote:


On 13/3/24 09:57, Mark Cave-Ayland wrote:

The aim is to restrict the esp_fifo_*() functions so that they only operate on
the hardware FIFO. When reading from cmdfifo in do_command_phase() use the
underlying Fifo8 functions directly.

Signed-off-by: Mark Cave-Ayland 
---
  hw/scsi/esp.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c
index 590ff99744..f8230c74b3 100644
--- a/hw/scsi/esp.c
+++ b/hw/scsi/esp.c
@@ -265,7 +265,7 @@ static void esp_do_nodma(ESPState *s);
  static void do_command_phase(ESPState *s)
  {
-    uint32_t cmdlen;
+    uint32_t cmdlen, n;
  int32_t datalen;
  SCSIDevice *current_lun;
  uint8_t buf[ESP_CMDFIFO_SZ];
@@ -275,7 +275,7 @@ static void do_command_phase(ESPState *s)
  if (!cmdlen || !s->current_dev) {
  return;
  }
-    esp_fifo_pop_buf(>cmdfifo, buf, cmdlen);
+    memcpy(buf, fifo8_pop_buf(>cmdfifo, cmdlen, ), cmdlen);


'n' is unused, use NULL?


I was sure I had tried that before and it had failed, but I see that you made it work 
with NULL in commit cd04033dbe ("util/fifo8: Allow fifo8_pop_buf() to not populate 
popped length") - thanks!


I'll make the change for v3, but I'll wait a couple of days first to see if there are 
any further comments, in particular R-B tags for patches 10 and 11.



  current_lun = scsi_device_find(>bus, 0, s->current_dev->id, s->lun);
  if (!current_lun) {



ATB,

Mark.




Re: [PATCH v2 01/16] esp.c: replace cmdfifo use of esp_fifo_pop_buf() in do_command_phase()

2024-03-13 Thread Philippe Mathieu-Daudé

On 13/3/24 09:57, Mark Cave-Ayland wrote:

The aim is to restrict the esp_fifo_*() functions so that they only operate on
the hardware FIFO. When reading from cmdfifo in do_command_phase() use the
underlying Fifo8 functions directly.

Signed-off-by: Mark Cave-Ayland 
---
  hw/scsi/esp.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c
index 590ff99744..f8230c74b3 100644
--- a/hw/scsi/esp.c
+++ b/hw/scsi/esp.c
@@ -265,7 +265,7 @@ static void esp_do_nodma(ESPState *s);
  
  static void do_command_phase(ESPState *s)

  {
-uint32_t cmdlen;
+uint32_t cmdlen, n;
  int32_t datalen;
  SCSIDevice *current_lun;
  uint8_t buf[ESP_CMDFIFO_SZ];
@@ -275,7 +275,7 @@ static void do_command_phase(ESPState *s)
  if (!cmdlen || !s->current_dev) {
  return;
  }
-esp_fifo_pop_buf(>cmdfifo, buf, cmdlen);
+memcpy(buf, fifo8_pop_buf(>cmdfifo, cmdlen, ), cmdlen);


'n' is unused, use NULL?

  
  current_lun = scsi_device_find(>bus, 0, s->current_dev->id, s->lun);

  if (!current_lun) {





[PATCH v2 01/16] esp.c: replace cmdfifo use of esp_fifo_pop_buf() in do_command_phase()

2024-03-13 Thread Mark Cave-Ayland
The aim is to restrict the esp_fifo_*() functions so that they only operate on
the hardware FIFO. When reading from cmdfifo in do_command_phase() use the
underlying Fifo8 functions directly.

Signed-off-by: Mark Cave-Ayland 
---
 hw/scsi/esp.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c
index 590ff99744..f8230c74b3 100644
--- a/hw/scsi/esp.c
+++ b/hw/scsi/esp.c
@@ -265,7 +265,7 @@ static void esp_do_nodma(ESPState *s);
 
 static void do_command_phase(ESPState *s)
 {
-uint32_t cmdlen;
+uint32_t cmdlen, n;
 int32_t datalen;
 SCSIDevice *current_lun;
 uint8_t buf[ESP_CMDFIFO_SZ];
@@ -275,7 +275,7 @@ static void do_command_phase(ESPState *s)
 if (!cmdlen || !s->current_dev) {
 return;
 }
-esp_fifo_pop_buf(>cmdfifo, buf, cmdlen);
+memcpy(buf, fifo8_pop_buf(>cmdfifo, cmdlen, ), cmdlen);
 
 current_lun = scsi_device_find(>bus, 0, s->current_dev->id, s->lun);
 if (!current_lun) {
-- 
2.39.2