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

Re: [Xen-devel] [RFC PATCH v3 07/18] xen/arm: ITS: implement hw_irq_controller for LPIs



On Mon, Jun 29, 2015 at 5:29 PM, Ian Campbell <ian.campbell@xxxxxxxxxx> wrote:
> On Tue, 2015-06-23 at 15:32 +0100, Julien Grall wrote:
> [...]
>> > +{
>> > +    struct its_collection *col;
>> > +    struct its_device *its_dev = get_irq_device(desc);
>> > +    u8 *cfg;
>> > +    u32 virq = irq_to_virq(desc);
>> > +
>> > +    ASSERT(virq < its_dev->nr_lpis);
>> > +
>> > +    cfg = gic_rdists->prop_page + desc->irq - NR_GIC_LPI;
>> > +    if ( enable )
>> > +        *cfg |= LPI_PROP_ENABLED;
>> > +    else
>> > +        *cfg &= ~LPI_PROP_ENABLED;
>> > +
>> > +    /*
>> > +     * Make the above write visible to the redistributors.
>> > +     * And yes, we're flushing exactly: One. Single. Byte.
>> > +     * Humpf...
>> > +     */
>> > +    if ( gic_rdists->flags & RDIST_FLAGS_PROPBASE_NEEDS_FLUSHING )
>> > +        clean_and_invalidate_dcache_va_range(cfg, sizeof(*cfg));
>> > +    else
>> > +        dsb(ishst);
>> > +
>> > +    /* Get collection id for this event id */
>> > +    col = &its_dev->its->collections[virq % num_online_cpus()];
>>
>> This is fragile, you are assuming that num_online_cpus() will never
>> change. Why don't you store the collection in every irq_desc?
>
> The original Linux code upon which this is based doesn't seem to need to
> lookup the collection here, why is flushing needed for us but not Linux?

We are writing to lpi property table. Even linux code flushes it.

>
> I'm also confused by the use of the variable name "virq" in a function
> called set_lpi_config which appears to be dealing with host level
> physical LPIs. It seems like this function would be broken for LPIs
> which were delivered to Xen and not to a guest, and that the irq_to_virq
> in here ought to be desc->irq, no?

I am using desc->irq for updating lpi property table but using vid to
send inv command

>
> BTW, the Linux original calls what this calls "virq" "id" instead, which
> is much less confusing.

OK will rename virq to vid

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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