[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH] spapr: support CPU hotplug
From: |
Alexey Kardashevskiy |
Subject: |
Re: [Qemu-ppc] [PATCH] spapr: support CPU hotplug |
Date: |
Tue, 27 Aug 2013 19:03:20 +1000 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 |
On 08/27/2013 06:54 PM, Alexander Graf wrote:
>
> On 27.08.2013, at 09:41, Alexey Kardashevskiy wrote:
>
>> On 08/27/2013 05:02 PM, Paolo Bonzini wrote:
>>> Il 27/08/2013 08:37, Alexey Kardashevskiy ha scritto:
>>>>>> So this is here to make sure we don't accidentally get out of halted
>>>>>> state by an interrupt on that vcpu. Could you please somehow make that
>>>>>> part obvious? Either by adding a comment or by only explicitly masking
>>>>>> DEC and EE and a comment :).
>>>>>>
>>>>>>> + cs->exit_request = 1;
>>>>>>
>>>>>> This should probably be qemu_cpu_kick_self().
>>>>>
>>>>> Uh, no, I don't think so. This is there purely to make sure we exit
>>>>> the inner loop, and actually test cpu_can_run() which will test
>>>>> halted. AFAICT qemu_cpu_kick_self() won't do anything similar.
>>>>
>>>> rtas_stop_self() eventually returns to kvm_cpu_exec() which calls
>>>> qemu_cpu_kick_self() and resets cs->exit_request before return so I do not
>>>> really see the difference in behaviour. And actually both ways CPU stops in
>>>> exactly the same way. What do I miss?
>>>
>>> What about TCG?
>>
>> Oh. Right. TCG :(
>>
>> qemu_cpu_kick_self() crashes the guest and cs->exit_request works fine.
>>
>> Why? Both should work? What is the expected behavior here? Thanks.
>
> Hrm. To me exit_request always was an internal piece of state that the inner
> loop uses to find out whether to exit, but not something we should randomly
> set from a device (and hypercalls / rtas calls are very similar to devices).
> So I would like to not have any code in hw/ that modifies it.
>
> However, we need the functionality of breaking out of the main loop, I agree.
> Maybe what you are really looking for is
> cpu_interrupt(CPU_INTERRUPT_HALT). That sets halted = 1 and exits the
> main loop, because it's an interrupt.
cpu_interrupt(CPU_INTERRUPT_HALT) works fine for TCG but does not for KVM
(the rtas call returns to the guest and it reports BUG).
--
Alexey
- [Qemu-ppc] [PATCH] spapr: support CPU hotplug, Alexey Kardashevskiy, 2013/08/23
- Re: [Qemu-ppc] [PATCH] spapr: support CPU hotplug, Alexander Graf, 2013/08/26
- Re: [Qemu-ppc] [PATCH] spapr: support CPU hotplug, David Gibson, 2013/08/26
- Re: [Qemu-ppc] [PATCH] spapr: support CPU hotplug, Alexey Kardashevskiy, 2013/08/27
- Re: [Qemu-ppc] [PATCH] spapr: support CPU hotplug, Paolo Bonzini, 2013/08/27
- Re: [Qemu-ppc] [PATCH] spapr: support CPU hotplug, Alexey Kardashevskiy, 2013/08/27
- Re: [Qemu-ppc] [PATCH] spapr: support CPU hotplug, Alexander Graf, 2013/08/27
- Re: [Qemu-ppc] [PATCH] spapr: support CPU hotplug,
Alexey Kardashevskiy <=
- Re: [Qemu-ppc] [PATCH] spapr: support CPU hotplug, Alexander Graf, 2013/08/27