|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC v2 11/15] vmx: Add a global wake-up vector for VT-d Posted-Interrupts
>>> On 08.05.15 at 11:07, <feng.wu@xxxxxxxxx> wrote:
> @@ -3262,6 +3271,28 @@ void vmx_vmenter_helper(const struct cpu_user_regs
> *regs)
> }
>
> /*
> + * Handle VT-d posted-interrupt when VCPU is blocked.
> + */
> +void pi_wakeup_interrupt(struct cpu_user_regs *regs)
static (and perhaps move it up so you don't need to forward declare it).
> +{
> + struct vcpu *v;
> + unsigned int cpu = smp_processor_id();
> +
> + spin_lock(&per_cpu(blocked_vcpu_lock, cpu));
> + list_for_each_entry(v, &per_cpu(blocked_vcpu, cpu),
> + blocked_vcpu_list) {
How long do you think such a list can grow? I'm afraid you might
be adding quite a bit of latency here to the system.
> + struct pi_desc *pi_desc = &v->arch.hvm_vmx.pi_desc;
> +
> + if ( pi_desc->on == 1 )
Isn't this a single-bit (i.e. boolean) field? In which case - no reason
to compare with 1.
I also don't see the value of the local variable - it's being used only
once, and without it the line wouldn't get overly long or unreadable.
> --- a/xen/include/xen/sched.h
> +++ b/xen/include/xen/sched.h
> @@ -148,6 +148,8 @@ struct vcpu
>
> struct vcpu *next_in_list;
>
> + struct list_head blocked_vcpu_list;
Again - why here instead of in VT-d/VMX specific structures?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |