|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 15/22] xen/arm: ITS: implement hw_irq_controller for LPIs
On Tue, Aug 4, 2015 at 7:15 PM, Julien Grall <julien.grall@xxxxxxxxxx> wrote:
> Hi Vijay,
>
> On 27/07/15 12:11, vijay.kilari@xxxxxxxxx wrote:
>> +
>> +static const hw_irq_controller its_host_lpi_type = {
>> + .typename = "gic-its",
>> + .startup = its_irq_startup,
>> + .shutdown = its_irq_shutdown,
>> + .enable = its_irq_enable,
>> + .disable = its_irq_disable,
>> + .ack = its_irq_ack,
>> + .end = gicv3_host_irq_end,
>> + .set_affinity = its_irq_set_affinity,
>> +};
>> +
>> +static const hw_irq_controller its_guest_lpi_type = {
>> + .typename = "gic-its",
>> + .startup = its_irq_startup,
>> + .shutdown = its_irq_shutdown,
>> + .enable = its_irq_enable,
>> + .disable = its_irq_disable,
>> + .ack = its_irq_ack,
>> + .end = gicv3_guest_irq_end,
>> + .set_affinity = its_irq_set_affinity,
>> +};
>> +
>> +hw_irq_controller *its_get_host_lpi_type(void)
>> +{
>> + return &its_host_lpi_type;
>> +}
>> +
>> +hw_irq_controller *its_get_guest_lpi_type(void)
>> +{
>> + return &its_guest_lpi_type;
>> +}
>> +
>
> Please directly export the variables.
These API's are called to assign hw_irq_handler to LPI
by generic code
>
>> /*
>> * How we allocate LPIs:
>> *
> diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
>> index 98d45bc..58e878e 100644
>> --- a/xen/arch/arm/gic-v3.c
>> +++ b/xen/arch/arm/gic-v3.c
>> @@ -40,6 +40,7 @@
>> #include <asm/device.h>
>> #include <asm/gic.h>
>> #include <asm/gic_v3_defs.h>
>> +#include <asm/gic-its.h>
>> #include <asm/cpufeature.h>
>>
>> /* Global state */
>> @@ -1033,15 +1034,19 @@ static void gicv3_irq_ack(struct irq_desc *desc)
>> /* No ACK -- reading IAR has done this for us */
>> }
>>
>> -static void gicv3_host_irq_end(struct irq_desc *desc)
>> +void gicv3_host_irq_end(struct irq_desc *desc)
>> {
>> /* Lower the priority */
>> gicv3_eoi_irq(desc);
>> - /* Deactivate */
>> - gicv3_dir_irq(desc);
>> + /*
>> + * LPIs does not have active state. Do do not deactivate,
>> + * when EOI mode is set to 1.
>> + */
>> + if ( !gic_is_lpi(desc->irq) )
>> + gicv3_dir_irq(desc);
>
> I already told you that the goal of the hw_irq_controller is to avoid
> checking the interrupt for every callback.
>
> If the current function doesn't work for you, introduce a new one. But
> don't put an if inside.
This is what I have done in patch v4
http://lists.xen.org/archives/html/xen-devel/2015-07/msg02128.html
But Ian suggested to export gicv3_host_irq_end instead of calling
gicv3_eoi_irq()
Regards
Vijay
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |