LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Benjamin Romer <benjamin.romer@unisys.com>
To: linux-kernel@vger.kernel.org
Cc: Vivek Goyal <vgoyal@in.ibm.com>, ebiederm@xmission.com
Subject: PATCH: Update disable_IO_APIC to use 8-bit destination field (X86_64)
Date: Wed, 17 Jan 2007 11:46:46 -0500	[thread overview]
Message-ID: <1169052407.3082.43.camel@ustr-romerbm-2.na.uis.unisys.com> (raw)

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));
 
                /*



             reply	other threads:[~2007-01-17 17:16 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-01-17 16:46 Benjamin Romer [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1169052407.3082.43.camel@ustr-romerbm-2.na.uis.unisys.com \
    --to=benjamin.romer@unisys.com \
    --cc=ebiederm@xmission.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=vgoyal@in.ibm.com \
    --subject='Re: PATCH: Update disable_IO_APIC to use 8-bit destination field (X86_64)' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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).