[PATCH v2 11/13] ARM: only include mach/irqs.h for !SPARSE_IRQ

Russell King - ARM Linux linux at arm.linux.org.uk
Wed Jan 25 16:32:06 EST 2012


On Fri, Jan 20, 2012 at 03:23:01PM -0600, Rob Herring wrote:
> On 01/20/2012 03:11 PM, Nicolas Pitre wrote:
> > On Fri, 20 Jan 2012, Rob Herring wrote:
> > 
> >> From: Rob Herring <rob.herring at calxeda.com>
> >>
> >> Make mach/irqs.h optional for SPARSE_IRQ. With this change irqs.h can be
> >> removed by converting platforms over to sparse irq.
> >>
> >> This intentionally breaks platforms that enable SPARSE_IRQ.
> > 
> > I don't get what you mean here.  The above seems contradictory.
> > 
> 
> You're right. The intro explains things more clearly. This breaks
> platforms (at boot time) that don't select SPARSE_IRQ, but let users
> enable it in their config. I don't understand why sparse irq is a user
> visible config option. We could move HAVE_SPARSE_IRQ down to each
> platform that selects SPARSE_IRQ and prevent enabling, but I think
> allowing it to break is good encouragement for others to fix those
> platforms. I'm open to other ideas.

config SPARSE_IRQ
	bool "Support sparse irq numbering" if MAY_HAVE_SPARSE_IRQ

and change all the existing 'HAVE_SPARSE_IRQ' to MAY_HAVE_SPARSE_IRQ
except those where SPARSE_IRQ gets selected.

In other words, on ARM get rid of HAVE_SPARSE_IRQ=y, don't select
MAY_HAVE_SPARSE_IRQ instead, but have each converted machine select
SPARSE_IRQ directly.  Then, people who want sparse irq to be a
question can have their cake.  While we can eat our cake too.

As a side-note, you may be pleased to know that I have SA11x0 stuff
converted to (and tested) with sparse IRQ.  That's with SA1111, the
UCB1x00 and Neponset expansion board for the Assabet all dynamically
allocating their IRQs.  The only fixed-numbered IRQs in SA11x0 in my
tree at the time of writing are the on-SoC IRQs, and the LoCoMo IRQs
(which I don't have the hardware to test for, so I'm not touching.)

Note that SA1111 support is fairly broken in current mainline because
of a half-completed (but still merged) patch which results in SA1111
overwriting IRQ0-55 with its own handlers.  Ouch.

This is /proc/interrupts for the Assabet+Neponset, with 49 SA11x0,
3 Neponset, 55 SA1111, and 16 UCB1300 IRQs:

           CPU0
 12:          1        SC  LCD
 15:       8238        SC  sa11x0-uart
 20:          0        SC  sa11x0-dma
 21:          0        SC  sa11x0-dma
 22:          0        SC  sa11x0-dma
 23:          0        SC  sa11x0-dma
 24:          0        SC  sa11x0-dma
 25:          0        SC  sa11x0-dma
 26:     599387        SC  ost0
 49:       3095         -  eth0
 73:          3  SA1111-l
103:          0  SA1111-h  SA1111 PCMCIA card detect
104:          0  SA1111-h  SA1111 CF card detect
105:          2  SA1111-h  SA1111 PCMCIA BVD1
106:          1  SA1111-h  SA1111 CF BVD1
107:          0   ucb1x00  gpio_keys
108:          0   ucb1x00  gpio_keys
109:          0   ucb1x00  gpio_keys
110:          0   ucb1x00  gpio_keys
111:          0   ucb1x00  gpio_keys
112:          0   ucb1x00  gpio_keys
Err:          0



More information about the linux-arm-kernel mailing list