On Thu, Oct 15, 2009 at 11:38:39AM +0200, Tom Rotenberg wrote:
> Simon,
>
> i'm glad you were able to re-produce it :)
>
> About the bug, i suspect that the code in the virtual DSDT, which
> "checks" which device was hot-plugged, is really not efficient, as it
> needs to go over all sltos prior to the new assigned slot before
> notifying the device. This means that if the slot number is 0x14, then
> the 'if' clause in the dsdt, needs about 20*8=160 if statements before
> it's notifying, and this what i think is causing the problem.
> Especially, because the GPE interrupt is defined as level interrupt.
>
> This bug can be fixed, using one of the followings:
> 1. Improve the code in the virtual DSDT (e.g.: doing some sort of
> 'binary-search' to see which device should be notified. This will
> reduce the number of 'if' clause to evaluate from 160 to ~5)
> 2. Change the interrupt to edge interrupt, and see if it helps
>
> What do u say?
It sounds worth investigating. do you want to come up with a patch?
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|