[PATCH] esp.c: remove transfer size check from DMA DATA IN and DATA OUT transfers

Mark Cave-Ayland posted 1 patch 4 months, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20240713224249.468084-1-mark.cave-ayland@ilande.co.uk
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, Fam Zheng <fam@euphon.net>
hw/scsi/esp.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[PATCH] esp.c: remove transfer size check from DMA DATA IN and DATA OUT transfers
Posted by Mark Cave-Ayland 4 months, 1 week ago
The transfer size check was originally added to prevent consecutive DMA TI
commands from causing an assert() due to an existing SCSI request being in
progress, but since the last set of updates this is no longer required.

Remove the transfer size check from DMA DATA IN and DATA OUT transfers so
that issuing a DMA TI command when there is no data left to transfer does
not cause an assert() due to an existing SCSI request being in progress.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2415
---
 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 5d9b52632e..8504dd30a0 100644
--- a/hw/scsi/esp.c
+++ b/hw/scsi/esp.c
@@ -594,7 +594,7 @@ static void esp_do_dma(ESPState *s)
         if (!s->current_req) {
             return;
         }
-        if (s->async_len == 0 && esp_get_tc(s) && s->ti_size) {
+        if (s->async_len == 0 && esp_get_tc(s)) {
             /* Defer until data is available.  */
             return;
         }
@@ -647,7 +647,7 @@ static void esp_do_dma(ESPState *s)
         if (!s->current_req) {
             return;
         }
-        if (s->async_len == 0 && esp_get_tc(s) && s->ti_size) {
+        if (s->async_len == 0 && esp_get_tc(s)) {
             /* Defer until data is available.  */
             return;
         }
-- 
2.39.2
Re: [PATCH] esp.c: remove transfer size check from DMA DATA IN and DATA OUT transfers
Posted by Philippe Mathieu-Daudé 4 months, 1 week ago
On 14/7/24 00:42, Mark Cave-Ayland wrote:
> The transfer size check was originally added to prevent consecutive DMA TI
> commands from causing an assert() due to an existing SCSI request being in
> progress, but since the last set of updates

[*]

> this is no longer required.
> 
> Remove the transfer size check from DMA DATA IN and DATA OUT transfers so
> that issuing a DMA TI command when there is no data left to transfer does
> not cause an assert() due to an existing SCSI request being in progress.
> 

[*] See commits f3ace75be8..78d68f312a

> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2415
> ---
>   hw/scsi/esp.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>

Queued adding [*], thanks.

Re: [PATCH] esp.c: remove transfer size check from DMA DATA IN and DATA OUT transfers
Posted by Mark Cave-Ayland 4 months, 1 week ago
On 15/07/2024 07:48, Philippe Mathieu-Daudé wrote:

> On 14/7/24 00:42, Mark Cave-Ayland wrote:
>> The transfer size check was originally added to prevent consecutive DMA TI
>> commands from causing an assert() due to an existing SCSI request being in
>> progress, but since the last set of updates
> 
> [*]
> 
>> this is no longer required.
>>
>> Remove the transfer size check from DMA DATA IN and DATA OUT transfers so
>> that issuing a DMA TI command when there is no data left to transfer does
>> not cause an assert() due to an existing SCSI request being in progress.
>>
> 
> [*] See commits f3ace75be8..78d68f312a
> 
>> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2415
>> ---
>>   hw/scsi/esp.c | 4 ++--
>>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> 
> Queued adding [*], thanks.

Awesome, thanks Phil!


ATB,

Mark.


Re: [PATCH] esp.c: remove transfer size check from DMA DATA IN and DATA OUT transfers
Posted by Philippe Mathieu-Daudé 4 months, 1 week ago
On 16/7/24 00:01, Mark Cave-Ayland wrote:
> On 15/07/2024 07:48, Philippe Mathieu-Daudé wrote:
> 
>> On 14/7/24 00:42, Mark Cave-Ayland wrote:
>>> The transfer size check was originally added to prevent consecutive 
>>> DMA TI
>>> commands from causing an assert() due to an existing SCSI request 
>>> being in
>>> progress, but since the last set of updates
>>
>> [*]
>>
>>> this is no longer required.
>>>
>>> Remove the transfer size check from DMA DATA IN and DATA OUT 
>>> transfers so
>>> that issuing a DMA TI command when there is no data left to transfer 
>>> does
>>> not cause an assert() due to an existing SCSI request being in progress.
>>>
>>
>> [*] See commits f3ace75be8..78d68f312a
>>
>>> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>>> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2415
>>> ---
>>>   hw/scsi/esp.c | 4 ++--
>>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>
>> Queued adding [*], thanks.
> 
> Awesome, thanks Phil!

I'm getting dubious timeout on the msys2 build on the SPARC target:
https://gitlab.com/philmd/qemu/-/jobs/7347774958

qemu:qtest+qtest-sparc / qtest-sparc/qom-test time out (After 900.0 seconds)
   1/151 qemu:qtest+qtest-sparc / qtest-sparc/qom-test 
TIMEOUT        900.38s   exit status 1
qemu:qtest+qtest-sparc / qtest-sparc/device-introspect-test time out 
(After 720.0 seconds)
   2/151 qemu:qtest+qtest-sparc / qtest-sparc/device-introspect-test 
TIMEOUT        720.23s   exit status 1
qemu:qtest+qtest-sparc / qtest-sparc/prom-env-test time out (After 360.0 
seconds)
   4/151 qemu:qtest+qtest-sparc / qtest-sparc/prom-env-test 
TIMEOUT        360.17s   exit status 1

Not sure this patch is the culprit, but since only SPARC is affected,
likely. I'll retest without this patch.

Regards,

Phil.

Re: [PATCH] esp.c: remove transfer size check from DMA DATA IN and DATA OUT transfers
Posted by Philippe Mathieu-Daudé 4 months, 1 week ago
On 16/7/24 08:46, Philippe Mathieu-Daudé wrote:
> On 16/7/24 00:01, Mark Cave-Ayland wrote:
>> On 15/07/2024 07:48, Philippe Mathieu-Daudé wrote:
>>
>>> On 14/7/24 00:42, Mark Cave-Ayland wrote:
>>>> The transfer size check was originally added to prevent consecutive 
>>>> DMA TI
>>>> commands from causing an assert() due to an existing SCSI request 
>>>> being in
>>>> progress, but since the last set of updates
>>>
>>> [*]
>>>
>>>> this is no longer required.
>>>>
>>>> Remove the transfer size check from DMA DATA IN and DATA OUT 
>>>> transfers so
>>>> that issuing a DMA TI command when there is no data left to transfer 
>>>> does
>>>> not cause an assert() due to an existing SCSI request being in 
>>>> progress.
>>>>
>>>
>>> [*] See commits f3ace75be8..78d68f312a
>>>
>>>> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>>>> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2415
>>>> ---
>>>>   hw/scsi/esp.c | 4 ++--
>>>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>>
>>> Queued adding [*], thanks.
>>
>> Awesome, thanks Phil!
> 
> I'm getting dubious timeout on the msys2 build on the SPARC target:
> https://gitlab.com/philmd/qemu/-/jobs/7347774958
> 
> qemu:qtest+qtest-sparc / qtest-sparc/qom-test time out (After 900.0 
> seconds)
>    1/151 qemu:qtest+qtest-sparc / qtest-sparc/qom-test TIMEOUT        
> 900.38s   exit status 1
> qemu:qtest+qtest-sparc / qtest-sparc/device-introspect-test time out 
> (After 720.0 seconds)
>    2/151 qemu:qtest+qtest-sparc / qtest-sparc/device-introspect-test 
> TIMEOUT        720.23s   exit status 1
> qemu:qtest+qtest-sparc / qtest-sparc/prom-env-test time out (After 360.0 
> seconds)
>    4/151 qemu:qtest+qtest-sparc / qtest-sparc/prom-env-test 
> TIMEOUT        360.17s   exit status 1
> 
> Not sure this patch is the culprit, but since only SPARC is affected,
> likely. I'll retest without this patch.

Same failure without this patch, so not this patch fault ;)


Re: [PATCH] esp.c: remove transfer size check from DMA DATA IN and DATA OUT transfers
Posted by Philippe Mathieu-Daudé 4 months, 1 week ago
On 16/7/24 10:56, Philippe Mathieu-Daudé wrote:
> On 16/7/24 08:46, Philippe Mathieu-Daudé wrote:
>> On 16/7/24 00:01, Mark Cave-Ayland wrote:
>>> On 15/07/2024 07:48, Philippe Mathieu-Daudé wrote:
>>>
>>>> On 14/7/24 00:42, Mark Cave-Ayland wrote:
>>>>> The transfer size check was originally added to prevent consecutive 
>>>>> DMA TI
>>>>> commands from causing an assert() due to an existing SCSI request 
>>>>> being in
>>>>> progress, but since the last set of updates
>>>>
>>>> [*]
>>>>
>>>>> this is no longer required.
>>>>>
>>>>> Remove the transfer size check from DMA DATA IN and DATA OUT 
>>>>> transfers so
>>>>> that issuing a DMA TI command when there is no data left to 
>>>>> transfer does
>>>>> not cause an assert() due to an existing SCSI request being in 
>>>>> progress.
>>>>>
>>>>
>>>> [*] See commits f3ace75be8..78d68f312a
>>>>
>>>>> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>>>>> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2415
>>>>> ---
>>>>>   hw/scsi/esp.c | 4 ++--
>>>>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>>>
>>>> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>>>
>>>> Queued adding [*], thanks.
>>>
>>> Awesome, thanks Phil!
>>
>> I'm getting dubious timeout on the msys2 build on the SPARC target:
>> https://gitlab.com/philmd/qemu/-/jobs/7347774958
>>
>> qemu:qtest+qtest-sparc / qtest-sparc/qom-test time out (After 900.0 
>> seconds)
>>    1/151 qemu:qtest+qtest-sparc / qtest-sparc/qom-test TIMEOUT 
>> 900.38s   exit status 1
>> qemu:qtest+qtest-sparc / qtest-sparc/device-introspect-test time out 
>> (After 720.0 seconds)
>>    2/151 qemu:qtest+qtest-sparc / qtest-sparc/device-introspect-test 
>> TIMEOUT        720.23s   exit status 1
>> qemu:qtest+qtest-sparc / qtest-sparc/prom-env-test time out (After 
>> 360.0 seconds)
>>    4/151 qemu:qtest+qtest-sparc / qtest-sparc/prom-env-test 
>> TIMEOUT        360.17s   exit status 1
>>
>> Not sure this patch is the culprit, but since only SPARC is affected,
>> likely. I'll retest without this patch.
> 
> Same failure without this patch, so not this patch fault ;)

Actually I couldn't find any patch in my PR triggering this,
then noticed it is also happening on the main branch:
https://gitlab.com/qemu-project/qemu/-/jobs/7347517442
:/