Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: pci/intr_remapping: Allocate irq_iommu on node irq: Add irq_node() primitive irq: Make sure irq_desc for legacy irq get correct node setting genirq: Add prototype for handle_nested_irq() irq: Remove superfluous NULL pointer check in check_irq_resend() irq: Clean up by removing irqfixup MODULE_PARM_DESC() genirq: Fix comment describing suspend_device_irqs() genirq: Remove obsolete defines and typedefs
This commit is contained in:
@@ -161,7 +161,7 @@ int __init early_irq_init(void)
|
||||
|
||||
desc = irq_desc_legacy;
|
||||
legacy_count = ARRAY_SIZE(irq_desc_legacy);
|
||||
node = first_online_node;
|
||||
node = first_online_node;
|
||||
|
||||
/* allocate irq_desc_ptrs array based on nr_irqs */
|
||||
irq_desc_ptrs = kcalloc(nr_irqs, sizeof(void *), GFP_NOWAIT);
|
||||
@@ -172,6 +172,9 @@ int __init early_irq_init(void)
|
||||
|
||||
for (i = 0; i < legacy_count; i++) {
|
||||
desc[i].irq = i;
|
||||
#ifdef CONFIG_SMP
|
||||
desc[i].node = node;
|
||||
#endif
|
||||
desc[i].kstat_irqs = kstat_irqs_legacy + i * nr_cpu_ids;
|
||||
lockdep_set_class(&desc[i].lock, &irq_desc_lock_class);
|
||||
alloc_desc_masks(&desc[i], node, true);
|
||||
|
@@ -15,10 +15,10 @@
|
||||
/**
|
||||
* suspend_device_irqs - disable all currently enabled interrupt lines
|
||||
*
|
||||
* During system-wide suspend or hibernation device interrupts need to be
|
||||
* disabled at the chip level and this function is provided for this purpose.
|
||||
* It disables all interrupt lines that are enabled at the moment and sets the
|
||||
* IRQ_SUSPENDED flag for them.
|
||||
* During system-wide suspend or hibernation device drivers need to be prevented
|
||||
* from receiving interrupts and this function is provided for this purpose.
|
||||
* It marks all interrupt lines in use, except for the timer ones, as disabled
|
||||
* and sets the IRQ_SUSPENDED flag for each of them.
|
||||
*/
|
||||
void suspend_device_irqs(void)
|
||||
{
|
||||
|
@@ -70,8 +70,7 @@ void check_irq_resend(struct irq_desc *desc, unsigned int irq)
|
||||
if ((status & (IRQ_LEVEL | IRQ_PENDING | IRQ_REPLAY)) == IRQ_PENDING) {
|
||||
desc->status = (status & ~IRQ_PENDING) | IRQ_REPLAY;
|
||||
|
||||
if (!desc->chip || !desc->chip->retrigger ||
|
||||
!desc->chip->retrigger(irq)) {
|
||||
if (!desc->chip->retrigger || !desc->chip->retrigger(irq)) {
|
||||
#ifdef CONFIG_HARDIRQS_SW_RESEND
|
||||
/* Set it pending and activate the softirq: */
|
||||
set_bit(irq, irqs_resend);
|
||||
|
@@ -297,7 +297,6 @@ static int __init irqfixup_setup(char *str)
|
||||
|
||||
__setup("irqfixup", irqfixup_setup);
|
||||
module_param(irqfixup, int, 0644);
|
||||
MODULE_PARM_DESC("irqfixup", "0: No fixup, 1: irqfixup mode, 2: irqpoll mode");
|
||||
|
||||
static int __init irqpoll_setup(char *str)
|
||||
{
|
||||
|
Reference in New Issue
Block a user