[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [Xen-ia64-devel] RE: Latest status about multiple domains on XEN/IPF
>From: Magenheimer, Dan (HP Labs Fort Collins) [mailto:dan.magenheimer@xxxxxx] >Sent: 2005年9月20日 3:00 > >> diff -r 55bc6698c889 xen/arch/ia64/xen/vcpu.c >> @@ -631,6 +632,16 @@ >> { >> UINT64 *p, *q, *r, bits, bitnum, mask, i, vector; >> >> + /* Always check pending event, since guest may just ack the >> + * event injection without handle. Later guest may throw out >> + * the event itself. >> + */ >> + if (event_pending(vcpu) && >> + !test_bit(vcpu->vcpu_info->arch.evtchn_vector, >> + &PSCBX(vcpu, insvc[0]))) >> + test_and_set_bit(vcpu->vcpu_info->arch.evtchn_vector, >> + &PSCBX(vcpu, irr[0])); >> + >> p = &PSCBX(vcpu,irr[3]); >> /* q = &PSCB(vcpu,delivery_mask[3]); */ >> r = &PSCBX(vcpu,insvc[3]); > >Why is the line that sets the irr bit calling >test_and_set_bit() rather than just set_bit()? >Even better, why not call vcpu_pend_interrupt() >which also sets the pending_interruption flag? Yes. Last night I just pushed for a quick test, and so may not use the most appropriate interface here. > >Also, why does the irr bit get set only if insvc is >not set? Isn't it possible to pend one interrupt >while another is in-service? Ideally your suggestion is also what I did in the start. But since I saw nested event injection when "xend start", I then adopted relative conservative approach to try whether solving the issue. But still not work yet. ;-( Thanks, Kevin _______________________________________________ Xen-ia64-devel mailing list Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-ia64-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |