Keir Fraser wrote:
> On 29/01/2010 07:32, "Liu, Jinsong" <jinsong.liu@xxxxxxxxx> wrote:
>
>> suppose
>> x = scan loop number defined at method PRSC
>> y = scan loop number defined at method NTFY
>> in original way, there are 2 implicit precondition to make it work
>> right: 1). y = x 2). y = 2^n
>> however, these preconditions are not always be satisfied.
>> for example, if x > y, it will produce unexpected scan and block vcpu
>> add/remove.
>
> Well, that didn't help. Some code comments would be handy.
>
> Looking at method PRSC the algorithm seems pretty mad given we
> auto-generate the code. Apparently we *always* call NTFY for every
> value of 0<=Arg0<=127, in order? And then you would propose to do a
> further linear If chain within NTFY? Why not merge NTFY into PRSC: if
> you must have a linear scan anyway in PRSC, just unroll the while
> loops, and inline the relevant bit of NTFY for every unrolled loop
> invocation.
>
> And please provide some code comments relating this all back to the
> ACPI Spec, and explaining what the local variables represent, etc.
> It's totally impossible to understand right now. Although at least
> loop unrolling will get rid of several local variables...
>
> -- Keir
>
Keir,
According to your suggestion, I plan to modify the patch as:
1. cancel method NTFY, merge it into method PRSC;
2. at method PRSC, only scan 'maxvcpus' times. we can transfer 'maxvcpus'
(which comes from cmdline) from qemu to dsdt side through bios_info;
3. at mk_dsdt.c, add some comments to make it clear;
Do you think it OK?
Thanks,
Jinsong
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|