[Qemu-devel] [PATCH] lsi: check if SIGP bit is already set in Wait reselect

Sven Schnelle posted 1 patch 5 years, 2 months ago
Test asan passed
Test docker-mingw@fedora passed
Test docker-clang@ubuntu failed
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190217113717.7077-1-svens@stackframe.org
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, Fam Zheng <fam@euphon.net>
hw/scsi/lsi53c895a.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
[Qemu-devel] [PATCH] lsi: check if SIGP bit is already set in Wait reselect
Posted by Sven Schnelle 5 years, 2 months ago
If SIGP is set, the 'Wait for Reselection' command should jump
immediately to the address stored in the second DWORD of the
instruction. This fixes spurious hangs in the HP-UX 11.11
installer when the SIGP bit gets set by the kernel before the
'Wait for Reselection' command is executed by SCRIPTS.

Signed-off-by: Sven Schnelle <svens@stackframe.org>
Tested-by: Helge Deller <deller@gmx.de>
---
 hw/scsi/lsi53c895a.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
index 8ba07f8756..bcff859bac 100644
--- a/hw/scsi/lsi53c895a.c
+++ b/hw/scsi/lsi53c895a.c
@@ -1297,8 +1297,10 @@ again:
                 }
                 break;
             case 2: /* Wait Reselect */
-                if (!lsi_irq_on_rsl(s)) {
-                    lsi_wait_reselect(s);
+                if (s->istat0 & LSI_ISTAT0_SIGP) {
+                    s->dsp = s->dnad;
+                } else if (!lsi_irq_on_rsl(s)) {
+                        lsi_wait_reselect(s);
                 }
                 break;
             case 3: /* Set */
-- 
2.20.1


Re: [Qemu-devel] [PATCH] lsi: check if SIGP bit is already set in Wait reselect
Posted by Sven Schnelle 5 years, 1 month ago
Hi List,

is this patch going to be accepted?

Thanks
Sven

On Sun, Feb 17, 2019 at 12:37:17PM +0100, Sven Schnelle wrote:
> If SIGP is set, the 'Wait for Reselection' command should jump
> immediately to the address stored in the second DWORD of the
> instruction. This fixes spurious hangs in the HP-UX 11.11
> installer when the SIGP bit gets set by the kernel before the
> 'Wait for Reselection' command is executed by SCRIPTS.
> 
> Signed-off-by: Sven Schnelle <svens@stackframe.org>
> Tested-by: Helge Deller <deller@gmx.de>
> ---
>  hw/scsi/lsi53c895a.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
> index 8ba07f8756..bcff859bac 100644
> --- a/hw/scsi/lsi53c895a.c
> +++ b/hw/scsi/lsi53c895a.c
> @@ -1297,8 +1297,10 @@ again:
>                  }
>                  break;
>              case 2: /* Wait Reselect */
> -                if (!lsi_irq_on_rsl(s)) {
> -                    lsi_wait_reselect(s);
> +                if (s->istat0 & LSI_ISTAT0_SIGP) {
> +                    s->dsp = s->dnad;
> +                } else if (!lsi_irq_on_rsl(s)) {
> +                        lsi_wait_reselect(s);
>                  }
>                  break;
>              case 3: /* Set */
> -- 
> 2.20.1
> 
> 

Re: [Qemu-devel] [PATCH] lsi: check if SIGP bit is already set in Wait reselect
Posted by Paolo Bonzini 5 years, 1 month ago
On 04/03/19 09:24, Sven Schnelle wrote:
> Hi List,
> 
> is this patch going to be accepted?

Yes, I have queued it now.

Paolo

> 
> Thanks
> Sven
> 
> On Sun, Feb 17, 2019 at 12:37:17PM +0100, Sven Schnelle wrote:
>> If SIGP is set, the 'Wait for Reselection' command should jump
>> immediately to the address stored in the second DWORD of the
>> instruction. This fixes spurious hangs in the HP-UX 11.11
>> installer when the SIGP bit gets set by the kernel before the
>> 'Wait for Reselection' command is executed by SCRIPTS.
>>
>> Signed-off-by: Sven Schnelle <svens@stackframe.org>
>> Tested-by: Helge Deller <deller@gmx.de>
>> ---
>>  hw/scsi/lsi53c895a.c | 6 ++++--
>>  1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
>> index 8ba07f8756..bcff859bac 100644
>> --- a/hw/scsi/lsi53c895a.c
>> +++ b/hw/scsi/lsi53c895a.c
>> @@ -1297,8 +1297,10 @@ again:
>>                  }
>>                  break;
>>              case 2: /* Wait Reselect */
>> -                if (!lsi_irq_on_rsl(s)) {
>> -                    lsi_wait_reselect(s);
>> +                if (s->istat0 & LSI_ISTAT0_SIGP) {
>> +                    s->dsp = s->dnad;
>> +                } else if (!lsi_irq_on_rsl(s)) {
>> +                        lsi_wait_reselect(s);
>>                  }
>>                  break;
>>              case 3: /* Set */
>> -- 
>> 2.20.1
>>
>>