WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH] evtchn_do_upcall: search a snapshot of level 2 b

To: Keir Fraser <keir.fraser@xxxxxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] evtchn_do_upcall: search a snapshot of level 2 bits for pending upcalls
From: Kaushik Kumar Ram <kaushik@xxxxxxxx>
Date: Sat, 30 Jan 2010 18:40:59 -0600
Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Sat, 30 Jan 2010 16:41:21 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <C7899BF9.D30E%keir.fraser@xxxxxxxxxxxxx>
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/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <C7899BF9.D30E%keir.fraser@xxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
On Jan 30, 2010, at 2:19 AM, Keir Fraser wrote:

> On 30/01/2010 02:19, "Kaushik Kumar Ram" <kaushik@xxxxxxxx> wrote:
> 
>> I understand your concern about the extra bytes in the stack. But I don't
>> follow your other arguments here. Can you explain a bit more?
> 
> Well, following your suggestion below, I agree it would be very good to pull
> the read of active_evtchns(l1i) out of the inner loop. But that is somewhat
> defeated if you continue to read active_evtchns(l1i) after the loop, and
> make clearing l1i in l1 mask conditional on it being zero: that means you
> will definitely come back to this l1i before resampling the active l1 mask
> and finding potential new l1i's to scan.
> 
> So how about making the clear of l1i in the l1 mask unconditional? I think
> that would be better, but I wasn't sure it is safe, since the first l1i you
> scan you may start halfway through, and thus legitimately have more work to
> do on that l1i on a later iteration of the outer loop. But I think that is
> the only case it is good to leave the l1 unmasked? Also, even better, on
> that second scan of that l1i, you would preferably want to scan only those
> bits in the l2 mask that you didn't scan on the first iteration of the outer
> loop!

OK. I agree the following is a good compromise.
- Unconditionally clear l1 bits except the first l1i (but only if l2 is scanned 
from halfway).
- Remember where the scanning began (both l1i and l2i) and stop scanning at 
that point after wrapping around.
- Read active_evtchns() once per l1i (except the first l1i where you might have 
to do it twice).

-Kaushik


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