On 11/23/2009 04:06 PM, Gleb Natapov wrote:
If guest access swapped out memory do not swap it in from vcpu thread
context. Setup slow work to do swapping and send async page fault to
a guest.

Allow async page fault injection only when guest is in user mode since
otherwise guest may be in non-sleepable context and will not be able to
reschedule.

+
+void kvm_arch_inject_async_page_present(struct kvm_vcpu *vcpu,
+                                       struct kvm_async_pf *work)
+{
+       put_user(KVM_PV_REASON_PAGE_READY, vcpu->arch.apf_data);
+       kvm_inject_page_fault(vcpu, work->arch.token, 0);
+       trace_kvm_send_async_pf(work->arch.token, work->gva,
+                               KVM_PV_REASON_PAGE_READY);
+}

What if the guest is now handling a previous asynv pf or ready notification? We're clobbering the data structure.

+
+bool kvm_arch_can_inject_async_page_present(struct kvm_vcpu *vcpu)
+{
+       return !kvm_event_needs_reinjection(vcpu)&&
+               kvm_x86_ops->interrupt_allowed(vcpu);
+}

Okay, so this is only allowed with interrupts disabled. Need to make sure the entire pf path up to async pf executes with interrupts disabled.

--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to