[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v4 11/28] x86/vvtd: Process interrupt remapping request



On Sun, Feb 11, 2018 at 01:31:41PM +0800, Chao Gao wrote:
> On Fri, Feb 09, 2018 at 05:44:17PM +0000, Roger Pau Monné wrote:
> >On Fri, Nov 17, 2017 at 02:22:18PM +0800, Chao Gao wrote:
> >> +static int vvtd_delivery(struct domain *d, uint8_t vector,
> >> +                         uint32_t dest, bool dest_mode,
> >> +                         uint8_t delivery_mode, uint8_t trig_mode)
> >> +{
> >> +    struct vlapic *target;
> >> +    struct vcpu *v;
> >> +
> >> +    switch ( delivery_mode )
> >> +    {
> >> +    case dest_LowestPrio:
> >> +        target = vlapic_lowest_prio(d, NULL, 0, dest, dest_mode);
> >> +        if ( target != NULL )
> >> +        {
> >> +            vvtd_debug("d%d: dest=v%d dlm=%x vector=%d trig_mode=%d\n",
> >> +                       vlapic_domain(target)->domain_id,
> >> +                       vlapic_vcpu(target)->vcpu_id,
> >> +                       delivery_mode, vector, trig_mode);
> >> +            vlapic_set_irq(target, vector, trig_mode);
> >> +            break;
> >> +        }
> >> +        vvtd_debug("d%d: null round robin: vector=%02x\n",
> >> +                   d->domain_id, vector);
> >> +        break;
> >> +
> >> +    case dest_Fixed:
> >> +        for_each_vcpu ( d, v )
> >> +            if ( vlapic_match_dest(vcpu_vlapic(v), NULL, 0, dest, 
> >> dest_mode) )
> >> +            {
> >> +                vvtd_debug("d%d: dest=v%d dlm=%x vector=%d 
> >> trig_mode=%d\n",
> >> +                           v->domain->domain_id, v->vcpu_id,
> >> +                           delivery_mode, vector, trig_mode);
> >> +                vlapic_set_irq(vcpu_vlapic(v), vector, trig_mode);
> >> +            }
> >> +        break;
> >> +
> >> +    case dest_NMI:
> >> +        for_each_vcpu ( d, v )
> >> +            if ( vlapic_match_dest(vcpu_vlapic(v), NULL, 0, dest, 
> >> dest_mode) &&
> >> +                 !test_and_set_bool(v->nmi_pending) )
> >> +                vcpu_kick(v);
> >
> >Doing this loops here seems quite bad from a preformance PoV,
> >specially taking into account that this code is going to be used with
> >> 128 vCPUs.
> 
> Maybe. But i prefer to not do optimization at this early stage.

I agree with not doing optimizations for first pass implementations,
but given this series is focused on increasing the number of vCPUs in
order to get better performance adding loops bounded to the number of
vCPUs seems quite incoherent.

There are several of those in the vlapic code for example, so I'm
wondering whether a preparatory patch should deal with those, or at
least have a plan.

I would like to at least see a 'TODO' tag here describing how to deal
with this in the future, so that the maximum allowed number of vCPUs
for HVM domain is not bumped until those TODOs are taken care of.

Roger.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.