qemu-s390x
[Top][All Lists]
Advanced

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

Re: [qemu-s390x] [PATCH v1 for-2.12 2/2] s390x: load_psw() should only e


From: Christian Borntraeger
Subject: Re: [qemu-s390x] [PATCH v1 for-2.12 2/2] s390x: load_psw() should only exchange the PSW for KVM
Date: Mon, 9 Apr 2018 13:40:48 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0


On 04/09/2018 01:36 PM, David Hildenbrand wrote:
> On 09.04.2018 13:35, Christian Borntraeger wrote:
>>
>>
>> On 04/09/2018 01:30 PM, David Hildenbrand wrote:
>>> Let's simplify it a bit. On some weird circumstances we would have tried
>>> to recompute watchpoints when running under KVM.
>>>
>>> Signed-off-by: David Hildenbrand <address@hidden>
>>> ---
>>>  target/s390x/helper.c | 10 ++++++----
>>>  1 file changed, 6 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/target/s390x/helper.c b/target/s390x/helper.c
>>> index 615fa24ab9..e8548f340a 100644
>>> --- a/target/s390x/helper.c
>>> +++ b/target/s390x/helper.c
>>> @@ -103,16 +103,18 @@ void load_psw(CPUS390XState *env, uint64_t mask, 
>>> uint64_t addr)
>>>
>>>      env->psw.addr = addr;
>>>      env->psw.mask = mask;
>>> -    if (tcg_enabled()) {
>>> -        env->cc_op = (mask >> 44) & 3;
>>> +
>>> +    /* KVM will handle all WAITs and trigger a WAIT exit on disabled_wait 
>>> */
>>> +    if (!tcg_enabled()) {
>>> +        return;
>>>      }
>>> +    env->cc_op = (mask >> 44) & 3;
>>
>> Do we have any call path were KVM could call load_psw?
> 
> do_restart_interrupt()
> 
> SIGP while the target CPU is stopped.

makes sense. Can you add that to the patch description? that makes it easier to 
understand
what can really go wrong without this patch.

> 
>>
>>>
>>>      if ((old_mask ^ mask) & PSW_MASK_PER) {
>>>          s390_cpu_recompute_watchpoints(CPU(s390_env_get_cpu(env)));
>>>      }
>>>
>>> -    /* KVM will handle all WAITs and trigger a WAIT exit on disabled_wait 
>>> */
>>> -    if (tcg_enabled() && (mask & PSW_MASK_WAIT)) {
>>> +    if (mask & PSW_MASK_WAIT) {
>>>          s390_handle_wait(s390_env_get_cpu(env));
>>>      }
>>>  }
>>>
>>
> 
> 




reply via email to

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