Re: [PATCH] KVM: x86: Convert INIT and SIPI signals into synchronously handled events

Jan Kiszka
2013-03-12T13:27:15Z

On 2013-03-12 14:25, Gleb Natapov wrote:
> On Tue, Mar 12, 2013 at 02:16:29PM +0100, Jan Kiszka wrote:
>> On 2013-03-12 14:13, Paolo Bonzini wrote:
>>> Il 12/03/2013 14:01, Jan Kiszka ha scritto:
>>>>>>>> For example, should kvm_arch_interrupt_allowed return zero if the VCPU
>>>>>>>> is in the INIT_RECEIVED state?
>>>>>>
>>>>>> Yeah, that probably makes sense beyond async_pf.
>>>> Wait: If you perform a proper reset on INIT already, we would clear IF
>>>> thus prevent also async_pf injections. On the other hand,
>>>> kvm_arch_can_inject_async_page_present returns true if apf.msr_val &
>>>> KVM_ASYNC_PF_ENABLED is not set - shouldn't that be cleared on reset as
>>>> well? Hmm...
>>>
>>> So if you split the reset (which is done on INIT) from setting up CS on
>>> SIPI, you kill two birds with a stone, or at least one and a half: you
>>> clear IF as you wrote above, and INIT on BSP almost works (the only
>>> missing bit should be setting the mp_state to KVM_MP_STATE_RUNNABLE).
>>
>> ...unless the async_pf MSR is cleared on reset as well.
>>
> It is:
> vcpu->arch.apf.msr_val = 0;

Can you explain the "if !(apf.msr_val & KVM_ASYNC_PF_ENABLED) return
true;" in kvm_arch_can_inject_async_page_present?

Jan

--
Siemens AG, Corporate Technology, CT RTC ITP SDP-DE
Corporate Competence Center Embedded Linux