lkml.org 
[lkml]   [2010]   [Oct]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v6 08/12] Handle async PF in a guest.
      On 10/04/2010 05:56 PM, Gleb Natapov wrote:
    > When async PF capability is detected hook up special page fault handler
    > that will handle async page fault events and bypass other page faults to
    > regular page fault handler. Also add async PF handling to nested SVM
    > emulation. Async PF always generates exit to L1 where vcpu thread will
    > be scheduled out until page is available.
    >

    Please separate guest and host changes.

    > +void kvm_async_pf_task_wait(u32 token)
    > +{
    > + u32 key = hash_32(token, KVM_TASK_SLEEP_HASHBITS);
    > + struct kvm_task_sleep_head *b =&async_pf_sleepers[key];
    > + struct kvm_task_sleep_node n, *e;
    > + DEFINE_WAIT(wait);
    > +
    > + spin_lock(&b->lock);
    > + e = _find_apf_task(b, token);
    > + if (e) {
    > + /* dummy entry exist -> wake up was delivered ahead of PF */
    > + hlist_del(&e->link);
    > + kfree(e);
    > + spin_unlock(&b->lock);
    > + return;
    > + }
    > +
    > + n.token = token;
    > + n.cpu = smp_processor_id();
    > + init_waitqueue_head(&n.wq);
    > + hlist_add_head(&n.link,&b->list);
    > + spin_unlock(&b->lock);
    > +
    > + for (;;) {
    > + prepare_to_wait(&n.wq,&wait, TASK_UNINTERRUPTIBLE);
    > + if (hlist_unhashed(&n.link))
    > + break;
    > + local_irq_enable();

    Suppose we take another apf here. And another, and another (for
    different pages, while executing schedule()). What's to prevent kernel
    stack overflow?

    > + schedule();
    > + local_irq_disable();
    > + }
    > + finish_wait(&n.wq,&wait);
    > +
    > + return;
    > +}
    > +EXPORT_SYMBOL_GPL(kvm_async_pf_task_wait);
    > +
    I have a truly marvellous patch that fixes the bug which this
    signature is too narrow to contain.



    \
     
     \ /
      Last update: 2010-10-07 15:13    [W:0.031 / U:29.460 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site