[Qemu-devel] [PATCH] s390x/tcg: initialize machine check queue

Cornelia Huck posted 1 patch 6 years, 6 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20171004162543.12233-1-cohuck@redhat.com
Test checkpatch passed
Test docker passed
Test s390x passed
target/s390x/cpu.c | 2 ++
1 file changed, 2 insertions(+)
[Qemu-devel] [PATCH] s390x/tcg: initialize machine check queue
Posted by Cornelia Huck 6 years, 6 months ago
Just as for external interrupts and I/O interrupts, we need to
initialize mchk_index during cpu reset.

Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---

Trying a device_add with a ccw device under tcg currently insta-crashes
qemu. Probably nobody ever tried the crw machine check support that I
hacked in...

Needs more work to avoid a guest kernel panic next; but let's pick the
low-hanging fruit first.

---
 target/s390x/cpu.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
index 4e1823a3e0..3fdf9bae70 100644
--- a/target/s390x/cpu.c
+++ b/target/s390x/cpu.c
@@ -111,6 +111,7 @@ static void s390_cpu_initial_reset(CPUState *s)
     for (i = 0; i < ARRAY_SIZE(env->io_index); i++) {
         env->io_index[i] = -1;
     }
+    env->mchk_index = -1;
 
     /* tininess for underflow is detected before rounding */
     set_float_detect_tininess(float_tininess_before_rounding,
@@ -148,6 +149,7 @@ static void s390_cpu_full_reset(CPUState *s)
     for (i = 0; i < ARRAY_SIZE(env->io_index); i++) {
         env->io_index[i] = -1;
     }
+    env->mchk_index = -1;
 
     /* tininess for underflow is detected before rounding */
     set_float_detect_tininess(float_tininess_before_rounding,
-- 
2.13.6


Re: [Qemu-devel] [PATCH] s390x/tcg: initialize machine check queue
Posted by Richard Henderson 6 years, 6 months ago
On 10/04/2017 12:25 PM, Cornelia Huck wrote:
> Just as for external interrupts and I/O interrupts, we need to
> initialize mchk_index during cpu reset.
> 
> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
> ---
> 
> Trying a device_add with a ccw device under tcg currently insta-crashes
> qemu. Probably nobody ever tried the crw machine check support that I
> hacked in...
> 
> Needs more work to avoid a guest kernel panic next; but let's pick the
> low-hanging fruit first.
> 
> ---
>  target/s390x/cpu.c | 2 ++
>  1 file changed, 2 insertions(+)

Reviewed-by: Richard Henderson <rth@twiddle.net>


r~

Re: [Qemu-devel] [PATCH] s390x/tcg: initialize machine check queue
Posted by Thomas Huth 6 years, 6 months ago
On 04.10.2017 18:25, Cornelia Huck wrote:
> Just as for external interrupts and I/O interrupts, we need to
> initialize mchk_index during cpu reset.
> 
> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
> ---
> 
> Trying a device_add with a ccw device under tcg currently insta-crashes
> qemu. Probably nobody ever tried the crw machine check support that I
> hacked in...
> 
> Needs more work to avoid a guest kernel panic next; but let's pick the
> low-hanging fruit first.
> 
> ---
>  target/s390x/cpu.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
> index 4e1823a3e0..3fdf9bae70 100644
> --- a/target/s390x/cpu.c
> +++ b/target/s390x/cpu.c
> @@ -111,6 +111,7 @@ static void s390_cpu_initial_reset(CPUState *s)
>      for (i = 0; i < ARRAY_SIZE(env->io_index); i++) {
>          env->io_index[i] = -1;
>      }
> +    env->mchk_index = -1;
>  
>      /* tininess for underflow is detected before rounding */
>      set_float_detect_tininess(float_tininess_before_rounding,
> @@ -148,6 +149,7 @@ static void s390_cpu_full_reset(CPUState *s)
>      for (i = 0; i < ARRAY_SIZE(env->io_index); i++) {
>          env->io_index[i] = -1;
>      }
> +    env->mchk_index = -1;
>  
>      /* tininess for underflow is detected before rounding */
>      set_float_detect_tininess(float_tininess_before_rounding,
> 

Makes sense.

Reviewed-by: Thomas Huth <thuth@redhat.com>


PS: I wonder whether the common code of s390_cpu_initial_reset() and
s390_cpu_full_reset() should be put into a separate function? Or maybe
s390_cpu_full_reset() should call s390_cpu_initial_reset() ? At least
the code duplication here looks like we should do some clean up here...

 Thomas


Re: [Qemu-devel] [PATCH] s390x/tcg: initialize machine check queue
Posted by Cornelia Huck 6 years, 6 months ago
On Wed,  4 Oct 2017 18:25:43 +0200
Cornelia Huck <cohuck@redhat.com> wrote:

> Just as for external interrupts and I/O interrupts, we need to
> initialize mchk_index during cpu reset.
> 
> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
> ---
> 
> Trying a device_add with a ccw device under tcg currently insta-crashes
> qemu. Probably nobody ever tried the crw machine check support that I
> hacked in...
> 
> Needs more work to avoid a guest kernel panic next; but let's pick the
> low-hanging fruit first.
> 
> ---
>  target/s390x/cpu.c | 2 ++
>  1 file changed, 2 insertions(+)

Queued to s390-next.