qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v1 23/27] s390x/tcg: implement STOP and RESET in


From: David Hildenbrand
Subject: Re: [Qemu-devel] [PATCH v1 23/27] s390x/tcg: implement STOP and RESET interrupts for TCG
Date: Mon, 18 Sep 2017 22:21:41 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0

On 18.09.2017 22:00, David Hildenbrand wrote:
> 
>>  static void cpu_inject_io(S390CPU *cpu, uint16_t subchannel_id,
>> diff --git a/target/s390x/sigp.c b/target/s390x/sigp.c
>> index ce8fda9d01..521dcc75f3 100644
>> --- a/target/s390x/sigp.c
>> +++ b/target/s390x/sigp.c
>> @@ -498,6 +498,7 @@ void do_stop_interrupt(CPUS390XState *env)
>>          s390_store_status(cpu, S390_STORE_STATUS_DEF_ADDR, true);
>>      }
>>      env->sigp_order = 0;
>> +    env->pending_int &= ~INTERRUPT_STOP;
> 
> The *awesome* kvm-unit-tests (yes, the single sigp_stop() we do when
> shutting down) just found a missing cpu_loop_exit()
> 
> diff --git a/target/s390x/sigp.c b/target/s390x/sigp.c
> index ce8fda9d01..9aadc3ffdd 100644
> --- a/target/s390x/sigp.c
> +++ b/target/s390x/sigp.c
> @@ -498,6 +498,11 @@ void do_stop_interrupt(CPUS390XState *env)
>          s390_store_status(cpu, S390_STORE_STATUS_DEF_ADDR, true);
>      }
>      env->sigp_order = 0;
> +    env->pending_int &= ~INTERRUPT_STOP;
> +#ifdef CONFIG_TCG
> +    /* the CPU has been stopped, we must immediately go out of the loop */
> +    cpu_loop_exit(CPU(s390_env_get_cpu(env)));
> +#endif
>  }
> 

if (tcg_enabled()) of course ...


-- 

Thanks,

David



reply via email to

[Prev in Thread] Current Thread [Next in Thread]