Bug 201058 - x86_64 need to pass virtual address to smp_read_mpc
x86_64 need to pass virtual address to smp_read_mpc
Product: Red Hat Enterprise Linux 4
Classification: Red Hat
Component: kernel (Show other bugs)
i386 Linux
medium Severity medium
: ---
: ---
Assigned To: Prarit Bhargava
Brian Brock
Depends On:
  Show dependency treegraph
Reported: 2006-08-02 11:49 EDT by Amul Shah
Modified: 2007-11-30 17:07 EST (History)
2 users (show)

See Also:
Fixed In Version: RHBA-2007-0304
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2007-05-07 23:01:54 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Amul Shah 2006-08-02 11:49:59 EDT
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6

Description of problem:
Note: The fix already exists in the upstream kernel (2.6.17) and the i386 version of the RHEL4 U4 kernel (2.6.9-40.EL)

When using the boot parameter acpi=noirq, the kernel hangs (aka does not panic) in smp_read_mpc when trying to read the ES7000 MPConfig table (which has been moved higher in memory by an new firmware release).

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:
1. Load new ES7000 BIOS (not released yet)
2. Boot the ES7000 with the boot parameter acpi=noirq
3. Machine hangs

Actual Results:

Machine Hangs

Expected Results:
The machine should have booted.

Additional info:
This patch changes the code to pass a virtual address to smp_read_mpc instead of a physical address.  This code has been copied directly from the i386 branch and works.  Excuse any spacing issues in this patch, I am writing this bug on windDOwS.

--- linux-2.6.9-40.orig/arch/x86_64/kernel/mpparse.c	2006-08-02 11:07:23.000000000 -0400
+++ linux-2.6.9-40.fixed/arch/x86_64/kernel/mpparse.c	2006-08-02 11:49:17.000000000 -0400
@@ -563,7 +563,7 @@
 		 * Read the physical hardware table.  Anything here will
 		 * override the defaults.
-		if (!smp_read_mpc((void *)(unsigned long)mpf->mpf_physptr)) {
+		if (!smp_read_mpc((void *)phys_to_virt(mpf->mpf_physptr))) {
 			smp_found_config = 0;
 			printk(KERN_ERR "BIOS bug, MP table errors detected!...\n");
 			printk(KERN_ERR "... disabling SMP support. (tell your hw vendor)\n");
Comment 2 Jason Baron 2006-09-05 11:56:58 EDT
committed in stream U5 build 42.6. A test kernel with this patch is available
from http://people.redhat.com/~jbaron/rhel4/
Comment 3 RHEL Product and Program Management 2006-10-12 19:17:41 EDT
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux maintenance release.  Product Management has requested
further review of this request by Red Hat Engineering, for potential
inclusion in a Red Hat Enterprise Linux Update release for currently deployed
products.  This request is not yet committed for inclusion in an Update
Comment 4 Jay Turner 2006-10-17 11:34:34 EDT
QE ack for 4.5.
Comment 6 Red Hat Bugzilla 2007-03-18 18:40:33 EDT
User jparadis@redhat.com's account has been closed
Comment 10 Red Hat Bugzilla 2007-05-07 23:01:54 EDT
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.


Note You need to log in before you can comment on or make changes to this bug.