Message ID | 20171004162543.12233-1-cohuck@redhat.com |
---|---|
State | New |
Headers | show |
Series | s390x/tcg: initialize machine check queue | expand |
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~
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
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.
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,
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(+)