[RFC PATCH 3/8] ARM: gic: convert logical CPU numbers into physical numbers

Will Deacon will.deacon at arm.com
Thu Aug 11 11:04:58 EDT 2011


On Tue, Aug 09, 2011 at 10:42:37PM +0100, Will Deacon wrote:
> The GIC driver must convert logical CPU numbers passed in from Linux
> into physical CPU numbers that are understood by the hardware.
> 
> This patch uses the new cpu_logical_map macro for performing the
> conversion inside the GIC driver.
> 
> Signed-off-by: Will Deacon <will.deacon at arm.com>
> ---
>  arch/arm/common/gic.c |   12 +++++++++---
>  1 files changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm/common/gic.c b/arch/arm/common/gic.c
> index 3227ca9..6822c10 100644
> --- a/arch/arm/common/gic.c
> +++ b/arch/arm/common/gic.c
> @@ -180,7 +180,7 @@ static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val,
>  		return -EINVAL;
>  
>  	mask = 0xff << shift;
> -	bit = 1 << (cpu + shift);
> +	bit = 1 << (cpu_logical_map(cpu) + shift);
>  
>  	spin_lock(&irq_controller_lock);
>  	val = readl_relaxed(reg) & ~mask;
> @@ -260,7 +260,8 @@ static void __init gic_dist_init(struct gic_chip_data *gic,
>  {
>  	unsigned int gic_irqs, irq_limit, i;
>  	void __iomem *base = gic->dist_base;
> -	u32 cpumask = 1 << smp_processor_id();
> +	u32 cpu = cpu_logical_map(smp_processor_id());
> +	u32 cpumask = 1 << cpu;

Just a heads up - I need to add an #ifdef CONFIG_SMP otherwise this will
fail to build for a UP configuration.

Will



More information about the linux-arm-kernel mailing list