Xen 
 
Home About Xen.org Xen Xen Summit Wiki Mailing List Bug Tracker Xen Downloads
 
   
 

xen-devel

[Xen-devel] [VTD][PATCH] Do dpci eoi outside of irq_lock

To: <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [VTD][PATCH] Do dpci eoi outside of irq_lock
From: "Han, Weidong" <weidong.han@xxxxxxxxx>
Date: Tue, 30 Oct 2007 14:20:02 +0800
Cc: "Kay, Allen M" <allen.m.kay@xxxxxxxxx>
Delivery-date: Mon, 29 Oct 2007 23:23:08 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AcgavOXFCbnl68j8RXGWnVWbKRESFQ==
Thread-topic: [Xen-devel] [VTD][PATCH] Do dpci eoi outside of irq_lock
Deadlock may occur if do hvm_dpci_eoi() inside of irq_lock on MP
platform. For example, there are two physical cpus. If interrupt is
injected on cpu0, but vcpu is migrated to cpu1 and it does eoi inside of
irq_lock, then IPI will be issued to cpu0. At the same time, cpu0 may
have disabled irq and is acquiring the same irq_lock. In addition,
current code cannot guarantee do hvm_dpci_eoi() inside of irq_lock when
timeout. This patch does hvm_dpci_eoi() outside of irq_lock, and solves
above problems.

Signed-off-by: Xiaohui Xin <xiaohui.xin@xxxxxxxxx>
Signed-off-by: Weidong Han <weidong.han@xxxxxxxxx>

Attachment: eoi_lock.patch
Description: eoi_lock.patch

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [VTD][PATCH] Do dpci eoi outside of irq_lock, Han, Weidong <=