[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Xen IRQ migration


  • To: xen-devel@xxxxxxxxxxxxxxxxxxx
  • From: George Dunlap <George.Dunlap@xxxxxxxxxxxxx>
  • Date: Thu, 25 Nov 2010 18:45:40 +0000
  • Cc: Keir Fraser <keir.fraser@xxxxxxxxxxxxx>, "Zhang, Xiantao" <xiantao.zhang@xxxxxxxxx>
  • Delivery-date: Thu, 25 Nov 2010 10:46:33 -0800
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:cc:content-type; b=Zq2o1NGoQpXLAqmbPAVL/lFKUUSAUZPUUbKP17hVL/I1w4jTzlW3dtoxPbpiwJezK9 QJNLIdI8QrWJwONmBZnJU9hQuoyK8h42Ai55qX8FwrfO6cfBxWjKF3RpNlw1vok6DCvf Nd+nwc5NRRpohJylzVk7iHpy5FswEoNKQv5F8=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

Xiantao,

I understand that you wrote a lot of the code for the Per-cpu IDTs,
including the IRQ migration code in __assign_irq_vector()?  It looks
to me like the general mechanism for moving looks like this:

* Someone calls __assign_irq_vector(), which if it decides it needs
to, will set cfg->move_in_progress
* The next time that IRQ is triggered, do_IRQ calls
desc->handler->ack(), which calls irq_complete_move(), which (if
cfg->move_in_progress is set) calls send_cleanup_vector().
* send_cleanup_vector() sets move_cleanup_count, clears
move_in_progress, and sends an IPI to the appropriate CPUs, which each
do what they need to do and decrement move_cleanup_count.
* When move_cleanup_count is zero, the migration is complete.

Is my general understanding correct?

The thing that seems a bit strange to me is that the "cleanup" which
actually moves the vector is only triggered the next time the IRQ
actually fires.  If that doesn't happen very often, then the irq can
be in the "move_in_progress" state for an arbitrarily long time
(perhaps forever), and all other modifications to it will fail.

Is there a reason it has to wait for the IRQ to actually fire?
Couldn't we send the cleanup vectors right away?  Or is there another
way we could guarantee that irq_complete_move() happened in a timely
manner?

Thanks,
 -George

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.