Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 38413
b: refs/heads/master
c: 0be6652
h: refs/heads/master
i:
  38411: e93e361
v: v3
  • Loading branch information
Eric W. Biederman authored and Linus Torvalds committed Oct 4, 2006
1 parent d6fb464 commit 599808d
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e7b946e98a456077dd6897f726f3d6197bd7e3b9
refs/heads/master: 0be6652f1e61b647f738eb25af057bf9551a9841
36 changes: 33 additions & 3 deletions trunk/arch/x86_64/kernel/io_apic.c
Original file line number Diff line number Diff line change
Expand Up @@ -1254,18 +1254,48 @@ static int ioapic_retrigger_vector(unsigned int vector)
* races.
*/

static void ack_apic(unsigned int vector)
static void ack_apic(unsigned int irq)
{
ack_APIC_irq();
}

static void ack_apic_edge(unsigned int irq)
{
move_native_irq(irq);
ack_APIC_irq();
}

static void ack_apic_level(unsigned int irq)
{
int do_unmask_irq = 0;

#if defined(CONFIG_GENERIC_PENDING_IRQ) || defined(CONFIG_IRQBALANCE)
/* If we are moving the irq we need to mask it */
if (unlikely(irq_desc[irq].status & IRQ_MOVE_PENDING)) {
do_unmask_irq = 1;
mask_IO_APIC_irq(irq);
}
#endif

/*
* We must acknowledge the irq before we move it or the acknowledge will
* not propogate properly.
*/
ack_APIC_irq();

/* Now we can move and renable the irq */
move_masked_irq(irq);
if (unlikely(do_unmask_irq))
unmask_IO_APIC_irq(irq);
}

static struct irq_chip ioapic_chip __read_mostly = {
.name = "IO-APIC",
.startup = startup_ioapic_vector,
.mask = mask_ioapic_vector,
.unmask = unmask_ioapic_vector,
.ack = ack_apic,
.eoi = ack_apic,
.ack = ack_apic_edge,
.eoi = ack_apic_level,
#ifdef CONFIG_SMP
.set_affinity = set_ioapic_affinity_vector,
#endif
Expand Down

0 comments on commit 599808d

Please sign in to comment.