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
|