|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 3/3] x86/vioapic: bind interrupts to PVH Dom0
On Fri, May 12, 2017 at 07:55:04AM -0600, Jan Beulich wrote:
> >>> On 19.04.17 at 17:11, <roger.pau@xxxxxxxxxx> wrote:
> > --- a/xen/arch/x86/hvm/vioapic.c
> > +++ b/xen/arch/x86/hvm/vioapic.c
> > @@ -158,6 +158,62 @@ static int vioapic_read(
> > return X86EMUL_OKAY;
> > }
> >
> > +static int vioapic_dom0_map_gsi(unsigned int gsi, unsigned int trig,
>
> Considering the conditional in the caller, please use hwdom instead
> of dom0.
Done.
> > + unsigned int pol)
> > +{
> > + struct domain *d = current->domain;
> > + xen_domctl_bind_pt_irq_t pt_irq_bind = {
> > + .irq_type = PT_IRQ_TYPE_PCI,
> > + .machine_irq = gsi,
> > + .hvm_domid = DOMID_SELF,
>
> I'm struggling with this field: Did you not notice it's entirely
> unused? We should really delete it from the interface, as
> redundant with the domain specifier in the domctl container
> structure.
Right, I've removed it.
> > + };
> > + int ret, pirq = gsi;
> > +
> > + ASSERT(is_hardware_domain(d));
> > +
> > + /* Interrupt has been unmasked, bind it now. */
> > + ret = mp_register_gsi(gsi, trig, pol);
> > + if ( ret && ret != -EEXIST )
> > + {
> > + gdprintk(XENLOG_WARNING, "vioapic: error registering GSI %u: %d\n",
> > + gsi, ret);
> > + goto error;
> > + }
> > + else if ( ret )
> > + /* Already in use. */
> > + return 0;
>
> I think this would better be
>
> if ( ret == -EEXIST )
> return 0;
> if ( ret )
> ....
Done.
> > + ret = allocate_and_map_gsi_pirq(d, &pirq, &pirq);
> > + if ( ret )
> > + {
> > + gdprintk(XENLOG_WARNING, "vioapic: error mapping GSI %u: %d\n",
> > + gsi, ret);
> > + goto error;
> > + }
> > +
> > + pcidevs_lock();
> > + ret = pt_irq_create_bind(d, &pt_irq_bind);
> > + pcidevs_unlock();
> > + if ( ret )
> > + {
> > + gdprintk(XENLOG_WARNING, "vioapic: error binding GSI %u: %d\n",
> > + gsi, ret);
> > + goto error_unmap;
> > + }
> > +
> > + return 0;
> > +
> > + error_unmap:
>
> I can live with the "error" label below, but the one above clearly can be
> avoided quite easily by simply inverting the preceding if().
I've changed this to:
pcidevs_lock();
ret = pt_irq_create_bind(d, &pt_irq_bind);
if ( ret )
{
gprintk(XENLOG_WARNING, "vioapic: error binding GSI %u: %d\n",
gsi, ret);
spin_lock(&d->event_lock);
unmap_domain_pirq(d, pirq);
spin_unlock(&d->event_lock);
}
pcidevs_unlock();
return ret;
And got rid of both labels.
> Also, considering this is Dom0-only, I wonder whether all of the log
> messages wouldn't better use gprintk().
Done.
Thanks, Roger.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |