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

Re: [Embedded-pv-devel] Driver domain under Xen



On Fri, Jan 23, 2015 at 6:05 PM, Julien Grall <julien.grall@xxxxxxxxxx> wrote:
> On 23/01/15 15:22, Andrii Tseglytskyi wrote:
>> OK. I'm sending you my local changes - 3 pieces of code.
>
> Few comments below.
>
>> Author: Andrii Tseglytskyi <andrii.tseglytskyi@xxxxxxxxxxxxxxx>
>> Date:   Tue Dec 30 18:38:55 2014 +0200
>>
>>     xen/arm: always use count number to release hardware irq
>>
>>     As soons as hardware interrupts are always mapped 1 to 1
>>     count number plus 32 is always equal to interrupt number which
>>     should be released. In current implementation if we don't receive
>>     any irq which number should be released existing p->irq number will
>>     be equal to 0, and interrupt will be not released properly.
>>     So, use lopp counter + 32 here.
>
> release_guest_irq is taking a vIRQ in parameter and not an IRQ.
>
>>     Change-Id: If89c928ff3ac5b83319d8b2b91439a7d598ed66d
>>     Signed-off-by: Andrii Tseglytskyi <andrii.tseglytskyi@xxxxxxxxxxxxxxx>
>
> See https://patches.linaro.org/42995/
>
>> commit 52db4eacef9c3ab050bba2548196bcaff657bc00
>> Author: Andrii Tseglytskyi <andrii.tseglytskyi@xxxxxxxxxxxxxxx>
>> Date:   Fri Aug 29 14:39:31 2014 +0300
>>
>>     xen/arm: allow reassigning of hw interrupts to guest domain
>>
>>     Patch allows reassigning of hardware interrupts from dom0 to
>>     other guest domain.
>>
>>     Change-Id: Ie85485830d87b07393cc7fe7e64de5fd5f65ebb8
>>     Signed-off-by: Andrii Tseglytskyi <andrii.tseglytskyi@xxxxxxxxxxxxxxx>
>>
>> diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c
>> index ba33571..018a2f6 100644
>> --- a/xen/arch/arm/irq.c
>> +++ b/xen/arch/arm/irq.c
>> @@ -455,12 +455,24 @@ int route_irq_to_guest(struct domain *d,
>> unsigned int virq,
>>              goto out;
>>
>>          if ( test_bit(_IRQ_GUEST, &desc->status) )
>> -            dprintk(XENLOG_G_ERR, "IRQ %u is already used by domain %u\n",
>> -                    irq, ad->domain_id);
>> +        {
>> +            dprintk(XENLOG_G_DEBUG, "IRQ %u is reassigned from domain
>> %u to domain %u\n",
>> +                    irq, ad->domain_id, d->domain_id);
>> +
>> +            clear_bit(_IRQ_DISABLED, &desc->status);
>
> Didn't you mean set_bit? We should not be able to remove an IRQ from
> DOM0 if it's enabled. Very bad thing could happen, such as the IRQ still
> in LRs...
>
> In any case, it clearly wrong to modify &desc->status in this code
> because it's related to the interrupt status in the hardware.
>
>> commit 09f50d7864b249bc4d53cb68c5c409ce7e8560f3
>> Author: Andrii Tseglytskyi <andrii.tseglytskyi@xxxxxxxxxxxxxxx>
>> Date:   Tue Nov 25 19:27:44 2014 +0200
>>
>>     xen/arm: map pv domain interrupts numbers one to one
>>
>>     Currently driver domain uses hardware interrupts. They
>>     are mapped as SPIs to guest domains. Patch allows to use
>>     one to one mappings between hardware interrupts numbers
>>     and SPIs numbers.
>>
>>     Change-Id: Ie5704c88979724b489cc33431bdf6a78ff03fe8c
>>     Signed-off-by: Andrii Tseglytskyi <andrii.tseglytskyi@xxxxxxxxxxxxxxx>
>>
>> diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c
>> index 653da31..e50e35d 100644
>> --- a/xen/arch/arm/vgic.c
>> +++ b/xen/arch/arm/vgic.c
>> @@ -66,7 +66,7 @@ int domain_vgic_init(struct domain *d)
>>
>>      d->arch.vgic.ctlr = 0;
>>
>> -    if ( is_hardware_domain(d) )
>> +    if ( is_hardware_domain(d) || is_pv_domain(d) )
>
> I don't understand this change. ARM only support one kind of domain.
>
> We should never use is_{pv,hvm}_domain on ARM as it doesn't have any
> meaning for this architecture.
>
> Give a look to my new patch series [1], for the interrupt parts it will
> really help you.

Julien,

This is why I didn't want to send you code right now. All these
changes work for us to have 1 to 1 IRQ mapping in driver domain and to
release them correctly in case of domain crash. Before get them
upstreamed I would prefer to think twice on each of them and rework if
needed.

Regards,
Andrii

>
> Regards,
>
> [1] http://www.gossamer-threads.com/lists/xen/devel/361849
>
> --
> Julien Grall



-- 

Andrii Tseglytskyi | Lead engineer
GlobalLogic
www.globallogic.com

_______________________________________________
Embedded-pv-devel mailing list
Embedded-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/embedded-pv-devel


 


Rackspace

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