Re: [patch 46/47] powerpc: Use new irq allocator

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Benjamin Herrenschmidt
Date: Sunday, October 3, 2010 - 3:54 pm

On Sun, 2010-10-03 at 09:53 -0700, Eric W. Biederman wrote:

In addition to Thomas comments, it's actually more complex than that :-)

Even assuming that what you say is true (and last I looked at my x86
machine, it's not ... x86 remaps "GSI" numbers and the results doesn't
seem always entirely predictible. HT interrupts makes it worse and MSIs
just completely kill your argument :-)

Some setups have stable numbers, some don't. Hypervisors can return your
crazy HW interrupt numbers, etc...

However, remapping arbitrary crazy HW number is only one aspect of the
powerpc virq scheme (typically for IRQ domains using the radix tree
based reverse-map).

The main deal I'd say is that in embedded land (and to some extent I
suspect that's going to happen more with x86), you quickly end up with
multiple interrupt domains, via cascaded controllers of all kinds etc...

In fact, I've been in situations where I want to be able to hot plug
entire PICs.

At this point, you end up having -some- kind of scheme to map the linux
IRQ numbers to HW numbers. The "old way" to do that tends to be by
assigning fixed ranges of numbers. This somewhat works, but it is a bit
clumsy and not very dynamic nor suited for hotpluggable stuff. It
generally requires the platform code to know about everything and
declare such ranges, etc...

Now, if the stability of the numbers is a problem for you, there's a few
easy things to do to solve that:

 - First, and we do that today on powerpc, we reserve 1...15 as "legacy"
and only a PIC that claims to be "legacy" can claim them (for us that
means some kind of 8259). So your old style legacy x86 IRQs can remain
there if you want to.

 - In systems with one domain, we tend to often end up with virq ==
hwirq since we try to allocate the same number "by default". Probably
what happens today with GSI on my x86 box here.

 - Then, while powerpc allocates virq numbers when irqs are mapped, that
can be quite "late", it could be perfectly kosher to imagine a way for
"child" PICs to instead instanciate the mapping of their whole range
early. That way, their virq numbers remain contiguous, providing a
simpler 1:N mapping, and in embedded systems, you'll probably end up
with the same mapping on every boot.

 - Appart from the risk of breaking crap that parses /proc/interrupts,
adding the HW irq information there would be trivial and solve your
problem.

So overall, I don't see a problem at all. And it makes handling of
arbitrary combinations of interrupt domains (cascaded PICs) very very
easy indeed.

Cheers,
Ben.

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[patch 00/47] Sparse irq rework, Thomas Gleixner, (Thu Sep 30, 4:14 pm)
[patch 01/47] x86: Plug memory leak in sparse irq, Thomas Gleixner, (Thu Sep 30, 4:14 pm)
[patch 03/47] genirq: Provide status modifier, Thomas Gleixner, (Thu Sep 30, 4:14 pm)
[patch 04/47] arm: Use irq status modifier, Thomas Gleixner, (Thu Sep 30, 4:14 pm)
[patch 05/47] genirq-sanitize-irq-data-accessors.patch, Thomas Gleixner, (Thu Sep 30, 4:14 pm)
[patch 06/47] genirq: Distangle kernel/irq/handle.c, Thomas Gleixner, (Thu Sep 30, 4:15 pm)
[patch 07/47] genirq: Remove early_init_irq_lock_class(), Thomas Gleixner, (Thu Sep 30, 4:15 pm)
[patch 08/47] genirq: Move core only inlines to kernel/irq, Thomas Gleixner, (Thu Sep 30, 4:15 pm)
[patch 10/47] genirq: Remove export of kstat_irqs_cpu, Thomas Gleixner, (Thu Sep 30, 4:15 pm)
[patch 11/47] genirq: Provide default irq init flags, Thomas Gleixner, (Thu Sep 30, 4:15 pm)
[patch 12/47] arm: Use ARCH_IRQ_INIT_FLAGS, Thomas Gleixner, (Thu Sep 30, 4:15 pm)
[patch 13/47] powerpc: Use ARCH_IRQ_INIT_FLAGS, Thomas Gleixner, (Thu Sep 30, 4:15 pm)
[patch 14/47] genirq: Implement a sane sparse_irq allocator, Thomas Gleixner, (Thu Sep 30, 4:15 pm)
[patch 16/47] genirq: Implement sane enumeration, Thomas Gleixner, (Thu Sep 30, 4:15 pm)
[patch 17/47] genirq-update-kerneldoc.patch, Thomas Gleixner, (Thu Sep 30, 4:15 pm)
[patch 18/47] genirq: Use sane sparse allocator, Thomas Gleixner, (Thu Sep 30, 4:16 pm)
[patch 21/47] x86: Sanitize apb timer interrupt handling, Thomas Gleixner, (Thu Sep 30, 4:16 pm)
[patch 22/47] x86: lguest: Convert to new irq chip functions, Thomas Gleixner, (Thu Sep 30, 4:16 pm)
[patch 23/47] x86: Cleanup visws interrupt handling, Thomas Gleixner, (Thu Sep 30, 4:16 pm)
[patch 24/47] x86: i8259: Convert to new irq_chip functions, Thomas Gleixner, (Thu Sep 30, 4:16 pm)
[patch 25/47] x86: Cleanup io_apic, Thomas Gleixner, (Thu Sep 30, 4:16 pm)
[patch 29/47] pci: Convert msi to new irq_chip functions, Thomas Gleixner, (Thu Sep 30, 4:16 pm)
[patch 30/47] dmar: Convert to new irq chip functions, Thomas Gleixner, (Thu Sep 30, 4:16 pm)
[patch 31/47] ht: Convert to new irq_chip functions, Thomas Gleixner, (Thu Sep 30, 4:17 pm)
[patch 33/47] pci: Cleanup the irq_desc mess in msi, Thomas Gleixner, (Thu Sep 30, 4:17 pm)
[patch 35/47] x86: ioapic: Cleanup some more, Thomas Gleixner, (Thu Sep 30, 4:17 pm)
[patch 36/47] x86: ioapic: Cleanup sparse irq code, Thomas Gleixner, (Thu Sep 30, 4:17 pm)
[patch 38/47] x86: Use sane enumeration, Thomas Gleixner, (Thu Sep 30, 4:17 pm)
[patch 39/47] genirq: Remove arch_init_chip_data(), Thomas Gleixner, (Thu Sep 30, 4:17 pm)
[patch 40/47] genirq: Sanitize dynamic irq handling, Thomas Gleixner, (Thu Sep 30, 4:17 pm)
[patch 41/47] arm: davinci: Cleanup irq_desc access, Thomas Gleixner, (Thu Sep 30, 4:18 pm)
[patch 43/47] x86: xen: Sanitise sparse_irq handling, Thomas Gleixner, (Thu Sep 30, 4:18 pm)
[patch 44/47] sh: Sanitize sparse irq, Thomas Gleixner, (Thu Sep 30, 4:18 pm)
[patch 45/47] x86: lguest: Use new irq allocator, Thomas Gleixner, (Thu Sep 30, 4:18 pm)
[patch 46/47] powerpc: Use new irq allocator, Thomas Gleixner, (Thu Sep 30, 4:18 pm)
Re: [patch 46/47] powerpc: Use new irq allocator, Benjamin Herrenschmidt, (Thu Sep 30, 5:42 pm)
Re: [patch 00/47] Sparse irq rework, Linus Torvalds, (Thu Sep 30, 8:32 pm)
Re: [patch 00/47] Sparse irq rework, Yinghai Lu, (Thu Sep 30, 10:54 pm)
Re: [patch 46/47] powerpc: Use new irq allocator, Thomas Gleixner, (Fri Oct 1, 6:07 am)
Re: [patch 00/47] Sparse irq rework, Thomas Gleixner, (Fri Oct 1, 1:35 pm)
Re: [patch 46/47] powerpc: Use new irq allocator, Benjamin Herrenschmidt, (Fri Oct 1, 1:46 pm)
Re: [patch 46/47] powerpc: Use new irq allocator, Grant Likely, (Fri Oct 1, 2:11 pm)
Re: [patch 46/47] powerpc: Use new irq allocator, Benjamin Herrenschmidt, (Fri Oct 1, 2:17 pm)
Re: [patch 16/47] genirq: Implement sane enumeration, Grant Likely, (Sun Oct 3, 3:55 am)
Re: [patch 00/47] Sparse irq rework, Grant Likely, (Sun Oct 3, 4:23 am)
Re: [patch 00/47] Sparse irq rework, Russell King - ARM Linux, (Sun Oct 3, 4:29 am)
Re: [patch 00/47] Sparse irq rework, Grant Likely, (Sun Oct 3, 4:57 am)
Re: [patch 00/47] Sparse irq rework, Thomas Gleixner, (Sun Oct 3, 6:48 am)
Re: [patch 20/47] x86: Remove useless reinitialization of ..., Eric W. Biederman, (Sun Oct 3, 8:21 am)
Re: [patch 00/47] Sparse irq rework, Eric W. Biederman, (Sun Oct 3, 9:41 am)
Re: [patch 46/47] powerpc: Use new irq allocator, Eric W. Biederman, (Sun Oct 3, 9:53 am)
Re: [patch 46/47] powerpc: Use new irq allocator, Thomas Gleixner, (Sun Oct 3, 11:34 am)
Re: [patch 00/47] Sparse irq rework, Thomas Gleixner, (Sun Oct 3, 12:16 pm)
Re: [patch 46/47] powerpc: Use new irq allocator, Thomas Gleixner, (Sun Oct 3, 1:04 pm)
Re: [patch 46/47] powerpc: Use new irq allocator, Benjamin Herrenschmidt, (Sun Oct 3, 3:54 pm)
Re: [patch 00/47] Sparse irq rework, Benjamin Herrenschmidt, (Sun Oct 3, 3:57 pm)
Re: [patch 46/47] powerpc: Use new irq allocator, Eric W. Biederman, (Sun Oct 3, 5:15 pm)
Re: [patch 46/47] powerpc: Use new irq allocator, Benjamin Herrenschmidt, (Sun Oct 3, 5:37 pm)
Re: [patch 00/47] Sparse irq rework, Eric W. Biederman, (Sun Oct 3, 5:49 pm)
Re: [patch 00/47] Sparse irq rework, Eric W. Biederman, (Sun Oct 3, 6:13 pm)
Re: [patch 00/47] Sparse irq rework, Ingo Molnar, (Sun Oct 3, 11:36 pm)
Re: [patch 00/47] Sparse irq rework, Thomas Gleixner, (Mon Oct 4, 1:05 am)
Re: [patch 00/47] Sparse irq rework, Grant Likely, (Mon Oct 4, 9:31 am)
Re: [patch 46/47] powerpc: Use new irq allocator, Grant Likely, (Mon Oct 4, 9:46 am)
Re: [patch 00/47] Sparse irq rework, Thomas Gleixner, (Tue Oct 5, 3:22 am)
Re: [patch 00/47] Sparse irq rework, Yinghai Lu, (Wed Oct 6, 3:45 pm)
Re: [patch 00/47] Sparse irq rework, Thomas Gleixner, (Wed Oct 6, 3:52 pm)
Re: [patch 00/47] Sparse irq rework, Yinghai Lu, (Wed Oct 6, 4:37 pm)
Re: [patch 00/47] Sparse irq rework, Yinghai Lu, (Wed Oct 6, 5:16 pm)
Re: [patch 00/47] Sparse irq rework, Thomas Gleixner, (Wed Oct 6, 9:01 pm)
Re: [patch 00/47] Sparse irq rework, Yinghai Lu, (Wed Oct 6, 9:38 pm)
Re: [patch 00/47] Sparse irq rework, Thomas Gleixner, (Fri Oct 8, 2:50 pm)
Re: [patch 00/47] Sparse irq rework, Thomas Gleixner, (Fri Oct 8, 2:54 pm)
Re: [patch 00/47] Sparse irq rework, Yinghai Lu, (Fri Oct 8, 9:26 pm)
Re: [patch 00/47] Sparse irq rework, Yinghai Lu, (Fri Oct 8, 10:44 pm)
Re: [patch 00/47] Sparse irq rework, Thomas Gleixner, (Fri Oct 8, 11:10 pm)
Re: [patch 00/47] Sparse irq rework, Thomas Gleixner, (Fri Oct 8, 11:34 pm)
Re: [patch 00/47] Sparse irq rework, Yinghai Lu, (Sat Oct 9, 12:03 am)
Re: [patch 00/47] Sparse irq rework, Yinghai Lu, (Sat Oct 9, 12:08 am)
Re: [patch 00/47] Sparse irq rework, Thomas Gleixner, (Sat Oct 9, 5:08 am)
Re: [patch 00/47] Sparse irq rework, Thomas Gleixner, (Sat Oct 9, 5:12 am)
Re: [patch 00/47] Sparse irq rework, Yinghai Lu, (Sat Oct 9, 7:32 pm)
Re: [patch 00/47] Sparse irq rework, Yinghai Lu, (Sat Oct 9, 10:11 pm)
Re: [patch 00/47] Sparse irq rework, Thomas Gleixner, (Sun Oct 10, 1:20 am)
Re: [patch 00/47] Sparse irq rework, Thomas Gleixner, (Sun Oct 10, 2:32 am)
Re: [patch 00/47] Sparse irq rework, Anca Emanuel, (Sun Oct 10, 6:30 am)
Re: [patch 00/47] Sparse irq rework, Yinghai Lu, (Sun Oct 10, 7:20 pm)
Re: [patch 00/47] Sparse irq rework, Yinghai Lu, (Sun Oct 10, 8:50 pm)
Re: [patch 00/47] Sparse irq rework, Thomas Gleixner, (Mon Oct 11, 1:16 am)
Re: [patch 00/47] Sparse irq rework, Benjamin Herrenschmidt, (Mon Oct 11, 4:34 am)
Re: [patch 00/47] Sparse irq rework, Yinghai Lu, (Mon Oct 11, 9:19 am)
Re: [patch 33/47] pci: Cleanup the irq_desc mess in msi, Jesse Barnes, (Mon Oct 11, 10:08 am)
[tip:irq/core] x86: Don't setup ioapic irq for sci twice, tip-bot for Yinghai Lu, (Tue Oct 12, 1:23 pm)