Patchwork [2/2] s390x: Return specification exception for unimplemented diag 308 subcodes

login
register
mail settings
Submitter Janosch Frank
Date Jan. 11, 2019, 11:36 a.m.
Message ID <20190111113657.66195-3-frankja@linux.ibm.com>
Download mbox | patch
Permalink /patch/697541/
State New
Headers show

Comments

Janosch Frank - Jan. 11, 2019, 11:36 a.m.
The architecture specifies specification exceptions for all
unavailable subcodes.

The presence of subcodes is indicated by checking some query subcode.
For example 6 will indicate that 3-6 are available. So future systems
might call new subcodes to check for new features. This should not
trigger a hw error, instead we return the architectured specification
exception.

Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Cc: qemu-stable@nongnu.org
---
 target/s390x/diag.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Christian Borntraeger - Jan. 11, 2019, 11:43 a.m.
On 11.01.2019 12:36, Janosch Frank wrote:
> The architecture specifies specification exceptions for all
> unavailable subcodes.
> 
> The presence of subcodes is indicated by checking some query subcode.
> For example 6 will indicate that 3-6 are available. So future systems
> might call new subcodes to check for new features. This should not
> trigger a hw error, instead we return the architectured specification
> exception.
> 
> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
> Cc: qemu-stable@nongnu.org

Yes, PIC06 is definitively the right thing to do.

Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
> ---
>  target/s390x/diag.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/target/s390x/diag.c b/target/s390x/diag.c
> index cfd7222ddd..c28cf1d9f1 100644
> --- a/target/s390x/diag.c
> +++ b/target/s390x/diag.c
> @@ -132,7 +132,7 @@ out:
>          }
>          return;
>      default:
> -        hw_error("Unhandled diag308 subcode %" PRIx64, subcode);
> +        s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, ra);
>          break;
>      }
>  }
>
David Hildenbrand - Jan. 11, 2019, 3:37 p.m.
On 11.01.19 12:36, Janosch Frank wrote:
> The architecture specifies specification exceptions for all
> unavailable subcodes.
> 
> The presence of subcodes is indicated by checking some query subcode.
> For example 6 will indicate that 3-6 are available. So future systems
> might call new subcodes to check for new features. This should not
> trigger a hw error, instead we return the architectured specification
> exception.
> 
> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
> Cc: qemu-stable@nongnu.org
> ---
>  target/s390x/diag.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/target/s390x/diag.c b/target/s390x/diag.c
> index cfd7222ddd..c28cf1d9f1 100644
> --- a/target/s390x/diag.c
> +++ b/target/s390x/diag.c
> @@ -132,7 +132,7 @@ out:
>          }
>          return;
>      default:
> -        hw_error("Unhandled diag308 subcode %" PRIx64, subcode);
> +        s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, ra);
>          break;
>      }
>  }
> 

Reviewed-by: David Hildenbrand <david@redhat.com>
Cornelia Huck - Jan. 14, 2019, 5:32 p.m.
On Fri, 11 Jan 2019 12:36:57 +0100
Janosch Frank <frankja@linux.ibm.com> wrote:

> The architecture specifies specification exceptions for all
> unavailable subcodes.
> 
> The presence of subcodes is indicated by checking some query subcode.
> For example 6 will indicate that 3-6 are available. So future systems
> might call new subcodes to check for new features. This should not
> trigger a hw error, instead we return the architectured specification
> exception.
> 
> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
> Cc: qemu-stable@nongnu.org
> ---
>  target/s390x/diag.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Thanks, applied.

Patch

diff --git a/target/s390x/diag.c b/target/s390x/diag.c
index cfd7222ddd..c28cf1d9f1 100644
--- a/target/s390x/diag.c
+++ b/target/s390x/diag.c
@@ -132,7 +132,7 @@  out:
         }
         return;
     default:
-        hw_error("Unhandled diag308 subcode %" PRIx64, subcode);
+        s390_program_interrupt(env, PGM_SPECIFICATION, ILEN_AUTO, ra);
         break;
     }
 }