mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 5/14] kexec: ioapic-virtwire-on-shutdown.i386
@ 2004-08-20 18:01 Eric W. Biederman
  0 siblings, 0 replies; only message in thread
From: Eric W. Biederman @ 2004-08-20 18:01 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel

Restore an ioapic to virtual wire mode on reboot if it has an ExtInt
input.

diff -uNr linux-2.6.8.1-mm2-apic-virtwire-on-shutdown.x86_64/arch/i386/kernel/io_apic.c linux-2.6.8.1-mm2-ioapic-virtwire-on-shutdown.i386/arch/i386/kernel/io_apic.c
--- linux-2.6.8.1-mm2-apic-virtwire-on-shutdown.x86_64/arch/i386/kernel/io_apic.c	Fri Aug 20 09:56:25 2004
+++ linux-2.6.8.1-mm2-ioapic-virtwire-on-shutdown.i386/arch/i386/kernel/io_apic.c	Fri Aug 20 10:42:32 2004
@@ -1628,11 +1628,42 @@
  */
 void disable_IO_APIC(void)
 {
+	int pin;
 	/*
 	 * Clear the IO-APIC before rebooting:
 	 */
 	clear_IO_APIC();
 
+	/*
+	 * If the i82559 is routed through an IOAPIC
+	 * Put that IOAPIC in virtual wire mode
+	 * so legacy interrups can be delivered.
+	 */
+	pin = find_isa_irq_pin(0, mp_ExtINT);
+	if (pin != -1) {
+		struct IO_APIC_route_entry entry;
+		unsigned long flags;
+
+		memset(&entry, 0, sizeof(entry));
+		entry.mask            = 0; /* Enabled */
+		entry.trigger         = 0; /* Edge */
+		entry.irr             = 0;
+		entry.polarity        = 0; /* High */
+		entry.delivery_status = 0;
+		entry.dest_mode       = 0; /* Physical */
+		entry.delivery_mode   = 7; /* ExtInt */
+		entry.vector          = 0;
+		entry.dest.physical.physical_dest = 0;
+
+
+		/*
+		 * Add it to the IO-APIC irq-routing table:
+		 */
+		spin_lock_irqsave(&ioapic_lock, flags);
+		io_apic_write(0, 0x11+2*pin, *(((int *)&entry)+1));
+		io_apic_write(0, 0x10+2*pin, *(((int *)&entry)+0));
+		spin_unlock_irqrestore(&ioapic_lock, flags);
+	}
 	disconnect_bsp_APIC();
 }
 

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2004-08-20 18:04 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-08-20 18:01 [PATCH 5/14] kexec: ioapic-virtwire-on-shutdown.i386 Eric W. Biederman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®