LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* PATCH: Update disable_IO_APIC to use 8-bit destination field (X86_64)
@ 2007-01-17 16:46 Benjamin Romer
  2007-01-17 19:08 ` Eric W. Biederman
  0 siblings, 1 reply; 15+ messages in thread
From: Benjamin Romer @ 2007-01-17 16:46 UTC (permalink / raw)
  To: linux-kernel; +Cc: Vivek Goyal, ebiederm

On the Unisys ES7000/ONE system, we encountered a problem where
performing a kexec reboot or dump on any cell other than cell 0 causes
the system timer to stop working, resulting in a hang during timer
calibration in the new kernel. 

We traced the problem to one line of code in disable_IO_APIC(), which
needs to restore the timer's IO-APIC configuration before rebooting. The
code is currently using the 4-bit physical destination field, rather
than using the 8-bit logical destination field, and it cuts off the
upper 4 bits of the timer's APIC ID. If we change this to use the
logical destination field, the timer works and we can kexec on the upper
cells. This was tested on two different cells (0 and 2) in an ES7000/ONE
system.

For reference, the relevant Intel xAPIC spec is kept at
ftp://download.intel.com/design/chipsets/e8501/datashts/30962001.pdf,
specifically on page 334.

-- Ben

--- linux-2.6.19.2.orig/arch/x86_64/kernel/io_apic.c    2007-01-10
14:10:37.000000000 -0500
+++ linux-2.6.19.2/arch/x86_64/kernel/io_apic.c 2007-01-17
09:20:24.000000000 -0500
@@ -1261,7 +1261,7 @@
                entry.dest_mode       = 0; /* Physical */
                entry.delivery_mode   = dest_ExtINT; /* ExtInt */
                entry.vector          = 0;
-               entry.dest.physical.physical_dest =
+               entry.dest.logical.logical_dest =
                                        GET_APIC_ID(apic_read(APIC_ID));
 
                /*



^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2007-01-19 17:14 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-01-17 16:46 PATCH: Update disable_IO_APIC to use 8-bit destination field (X86_64) Benjamin Romer
2007-01-17 19:08 ` Eric W. Biederman
2007-01-18  3:41   ` Vivek Goyal
2007-01-18  4:36     ` Vivek Goyal
2007-01-18  7:10       ` Eric W. Biederman
     [not found]         ` <2 0070118080003.GC31860@in.ibm.com>
2007-01-18  8:00         ` Vivek Goyal
2007-01-18 14:58           ` Benjamin Romer
2007-01-18 17:23           ` Benjamin Romer
2007-01-18 18:14             ` Eric W. Biederman
     [not found]               ` <1169147619.6665. 11.camel@ustr-romerbm-2.na.uis.unisys.com>
2007-01-18 19:13               ` Benjamin Romer
2007-01-19  3:49                 ` Vivek Goyal
2007-01-19 15:11                   ` Benjamin Romer
2007-01-19 15:43                     ` Randy Dunlap
2007-01-19 17:14                       ` Benjamin Romer
2007-01-19 15:55                     ` 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;
as well as URLs for NNTP newsgroup(s).