diff options
| author | Grant Likely <grant.likely@secretlab.ca> | 2012-04-23 12:30:02 +0000 | 
|---|---|---|
| committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-04-30 10:45:26 +1000 | 
| commit | 4013369f3782af9a488e37c2b603f1dcf008ea76 (patch) | |
| tree | ff5266d942217776f0cc25b181b86ac1f537f02a /arch/powerpc/sysdev/cpm2_pic.c | |
| parent | 8751ed14dcdd692733072966bf97b6b8c21ccaad (diff) | |
| download | olio-linux-3.10-4013369f3782af9a488e37c2b603f1dcf008ea76.tar.xz olio-linux-3.10-4013369f3782af9a488e37c2b603f1dcf008ea76.zip  | |
powerpc/irqdomain: Fix broken NR_IRQ references
The switch from using irq_map to irq_alloc_desc*() for managing irq
number allocations introduced new bugs in some of the powerpc
interrupt code.  Several functions rely on the value of NR_IRQS to
determine the maximum irq number that could get allocated.  However,
with sparse_irq and using irq_alloc_desc*() the maximum possible irq
number is now specified with 'nr_irqs' which may be a number larger
than NR_IRQS.  This has caused breakage on powermac when
CONFIG_NR_IRQS is set to 32.
This patch removes most of the direct references to NR_IRQS in the
powerpc code and replaces them with either a nr_irqs reference or by
using the common for_each_irq_desc() macro.  The powerpc-specific
for_each_irq() macro is removed at the same time.
Also, the Cell axon_msi driver is refactored to remove the global
build assumption on the size of NR_IRQS and instead add a limit to the
maximum irq number when calling irq_domain_add_nomap().
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/sysdev/cpm2_pic.c')
| -rw-r--r-- | arch/powerpc/sysdev/cpm2_pic.c | 3 | 
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/powerpc/sysdev/cpm2_pic.c b/arch/powerpc/sysdev/cpm2_pic.c index d3be961e2ae..10386b676d8 100644 --- a/arch/powerpc/sysdev/cpm2_pic.c +++ b/arch/powerpc/sysdev/cpm2_pic.c @@ -51,8 +51,7 @@  static intctl_cpm2_t __iomem *cpm2_intctl;  static struct irq_domain *cpm2_pic_host; -#define NR_MASK_WORDS   ((NR_IRQS + 31) / 32) -static unsigned long ppc_cached_irq_mask[NR_MASK_WORDS]; +static unsigned long ppc_cached_irq_mask[2]; /* 2 32-bit registers */  static const u_char irq_to_siureg[] = {  	1, 1, 1, 1, 1, 1, 1, 1,  |