Re: [Patch V3 0/9] Refine generic/PCI MSI irqodmian interfaces

From: Thomas Gleixner
Date: Mon Nov 17 2014 - 19:59:47 EST

On Mon, 17 Nov 2014, Jiang Liu wrote:
> This patch set is based on tip/irq/irqdomain and tries to refine
> interfaces to support irqdomain for generic MSI and PCI MSI.

So to make progress on that matter I picked that up along with a few
other patches which affect the core code (more stacked irq callbacks
and Marcs workaround for the handler assignment issue).

I rebased the whole lot on Bjorns pci/msi branch as discussed in this

After that I spent quite some time to reorder and fold back patches so
we have no obvious wreckage, but at the same time preserve at least
some of the development process for this.

Finally I added docbook comments where missing (please provide them
next time yourself).

Marc ran an initial smoketest on an early iteration which did not fall
into bits and pieces right away.

The only major change is that I got rid of the ugly

#ifndef msi_alloc_info_t

trickery by moving the generic version into include/asm-generic/msi.h

So if you want to use the generic version, you need to create your
arch/xxx/include/asm/msi.h file which includes asm-generic/msi.h.

For the ones who want to override it, create
arch/xxx/include/asm/msi.h, include whatever it takes and provide the
proper typedef.

I'll send that patch (7bde31a7969f) out tomorrow morning as I want to
have Arnds blessing for that.

That all is available in

git:// irq/irqdomain

Note, that the branch has been rebased and is still not considered to
be immutable.

So while I sorted out the pci related process with Bjorn, here is the
process for this and the depending arch/xxx bits and pieces:

1) If the current content of the irq/irqdomain branch in tip does not
raise eyebrows and does not require any conceptual fixups within 24
hrs from now, then I'm going to declare it immutable, merge it
into next and let the arch folks depend on it.

2) If after that any updates to the core irq/pci/msi code are required
they need to go through that branch first unless they are agreed on
to be arch/xxx specific and can go through a different tree which
is the only one which requires that.

I really rely on your cooperation here, as I don't want to end up with
an unexplainable mess when the stuff hits Linus tree and he starts
rumaging for his diving harpune ....

Find below the commit list based on commit c167caf8d174: PCI/MSI:
Remove useless bus->msi assignment in Bjorns pci/msi branch.


2d294376193f: PCI/MSI: Allow an msi_chip to be associated to an irq domain
4888af47f51a: PCI/MSI: Provide mechanism to alloc/free MSI/MSIX interrupt from irqdomain
f15c6d33c218: PCI/MSI: Enhance core to support hierarchy irqdomain
1a91b4fb79a2: PCI/MSI: Move cached entry functions to irq core
c0b4a8942b6c: genirq: Provide default callbacks for msi_domain_ops
473e759918d2: genirq: Introduce msi_domain_alloc/free_irqs()
7bde31a7969f: asm-generic: Add msi.h
8c507b885ec3: genirq: Add generic msi irq domain support
f49d8e21319f: genirq: Introduce callback irq_chip.irq_write_msi_msg
0ac68de4f9c7: genirq: Work around __irq_set_handler vs stacked domains ordering issues
153a2674ebe9: irqdomain: Introduce helper function irq_domain_add_hierarchy()
5b15d50cfaa8: irqdomain: Implement a method to automatically call parent domains alloc/free
de81049f177d: genirq: Introduce helper irq_domain_set_info() to reduce duplicated code
5447cf75ebba: genirq: Split out flow handler typedefs into seperate header file
5d7a3e203c54: genirq: Add IRQ_SET_MASK_OK_DONE to support stacked irqchip
fb3577cf30b4: genirq: Introduce irq_chip.irq_compose_msi_msg() to support stacked irqchip
61454f3977d2: genirq: Add more helper functions to support stacked irq_chip
79d4a9783265: genirq: Introduce helper functions to support stacked irq_chip
df333db2e20a: irqdomain: Do irq_find_mapping and set_type for hierarchy irqdomain in case OF
3f4cac0a4ea8: irqdomain: Introduce new interfaces to support hierarchy irqdomains
f9e2d8740075: PCI/MSI: Introduce helpers to hide struct msi_desc implementation details
33190dab3a59: PCI/MSI: Rename write_msi_msg() to pci_write_msi_msg()
1da7e00b1f73: PCI/MSI: Rename __read_msi_msg() to __pci_read_msi_msg()
b9191cbef61f: PCI/MSI: Kill redundant call of irq_set_msi_desc() for MSI-X interrupts
dbcb4c926ece: PCI/MSI: Simplify PCI MSI code by initializing msi_desc.nvec_used earlier
6cf585318fde: PCI/MSI: Remove unnecessary braces around single statements
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at