From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keir Fraser Subject: Re: [VTD][patch 0/5] HVM device assignment using vt-d Date: Thu, 31 May 2007 16:40:04 +0100 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "Tian, Kevin" , Guy Zana , "Kay, Allen M" , xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org On 31/5/07 16:30, "Tian, Kevin" wrote: > OK, my rough thought is as below: > > The reason to change polarity, IMO, is to capture the de-assert > edge in the physical wire and then reflect de-assertion into the virtual > wire. Then allow the statistics on gsi_assert_count to be updated > correctly, when shared with virtual devices in Qemu. > > My proposal is to take virtual EOI as the de-assertion hint, without > any change on physical RTE property like polarity. For example, the > flow could be following by keeping a saying hw_assert_status array for > all virtual GSIs: (take vioapic for example) Ah, okay, so no polarity switching at all. Basically use VIOAPIC EOI as a hint to tentatively drop the virtual wire to LOW, and only then ->end the physical interrupt. I guess this is pretty much what you already implement in your VT-d patches? It'd be interesting to know how these two approaches compare performance-wise. I suppose yours should win, really, due to fewer physical interrupts. If this is how your current VT-d patches handle interrupts then I don't see why ioapic_ack=new is not working for you. That's a bit weird. I guess I could read the patches some more. ;-) -- Keir