All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Yinghai Lu <yinghai@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Ravikiran G Thirumalai <kiran@scalex86.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Cyrill Gorcunov <gorcunov@gmail.com>,
	linux-kernel@vger.kernel.org, shai@scalex86.org,
	Suresh Siddha <suresh.b.siddha@intel.com>
Subject: Re: [PATCH] x86: fix vsmp booting with phys_pkg_id changing
Date: Wed, 26 Aug 2009 10:08:11 +0200	[thread overview]
Message-ID: <20090826080811.GG23435@elte.hu> (raw)
In-Reply-To: <4A944D3C.5030100@kernel.org>


* Yinghai Lu <yinghai@kernel.org> wrote:

> 2.6.31-rc7 does not boot on vSMPowered systems. 
> 
> [    8.501108] CPU31: Thermal monitoring enabled (TM1)
> [    8.501127] CPU 31 MCA banks SHD:2 SHD:3 SHD:5 SHD:6 SHD:8
> [    8.650254] CPU31: Intel(R) Xeon(R) CPU           E5540  @ 2.53GHz stepping 04
> [    8.710324] Brought up 32 CPUs
> [    8.713916] Total of 32 processors activated (162314.96 BogoMIPS).
> [    8.721489] ERROR: parent span is not a superset of domain->span
> [    8.727686] ERROR: domain->groups does not contain CPU0
> [    8.733091] ERROR: groups don't span domain->span
> [    8.737975] ERROR: domain->cpu_power not set
> [    8.742416]
> 
> bisected to
> |
> | commit 2759c3287de27266e06f1f4e82cbd2d65f6a044c
> | x86: don't call read_apic_id if !cpu_has_apic
> |
> 
> need to use apic id in phys_pkg_id for vsmp...
> 
> Reported-and-Tested-by: Ravikiran Thirumalai <kiran@scalex86.org>
> Signed-off-by: Yinghai Lu <yinghai@kernel.org>
> 
> ---
>  arch/x86/kernel/apic/probe_64.c |   10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> Index: linux-2.6/arch/x86/kernel/apic/probe_64.c
> ===================================================================
> --- linux-2.6.orig/arch/x86/kernel/apic/probe_64.c
> +++ linux-2.6/arch/x86/kernel/apic/probe_64.c
> @@ -44,6 +44,11 @@ static struct apic *apic_probe[] __initd
>  	NULL,
>  };
>  
> +static int apicid_phys_pkg_id(int initial_apic_id, int index_msb)
> +{
> +	return hard_smp_processor_id() >> index_msb;
> +}
> +
>  /*
>   * Check the APIC IDs in bios_cpu_apicid and choose the APIC mode.
>   */
> @@ -69,6 +74,11 @@ void __init default_setup_apic_routing(v
>  		printk(KERN_INFO "Setting APIC routing to %s\n", apic->name);
>  	}
>  
> +	if (is_vsmp_box()) {
> +		/* need to update phys_pkg_id */
> +		apic->phys_pkg_id = apicid_phys_pkg_id;
> +	}

Ok, this looks like a rather straightforward quirk - and vSMP is 
indeed special in that it sets up overlapping APIC ids. It's also 
the smaller patch with basically zero cross section to other 
systems, so a lot more -rc7 worthy.

So i've applied it to x86/urgent (with small edits to the 
changelog). Any objections from anyone?

Note, should any other, real hardware show problems with , we might 
still have to consider reverting the original change in 2759c32. 
It's borderline.

Btw., the code is still not fully clean. For example this bit in 
generic_identify():

#ifdef CONFIG_X86_32
# ifdef CONFIG_X86_HT
                c->apicid = apic->phys_pkg_id(c->initial_apicid, 0);
# else
                c->apicid = c->initial_apicid;
# endif
#endif

and in another place we have:

#ifdef CONFIG_X86_64
        c->apicid = apic->phys_pkg_id(c->initial_apicid, 0);
#endif

This ifdeffery could probably be removed and we could call 
->phys_pkg_id() all the time, right?

	Ingo

  reply	other threads:[~2009-08-26  8:08 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-24 18:26 [patch] x86: 2.6.31-rc7 crash due to buggy flat_phys_pkg_id Ravikiran G Thirumalai
2009-08-24 23:53 ` Yinghai Lu
2009-08-25  0:27   ` Yinghai Lu
2009-08-25  1:38     ` Ravikiran G Thirumalai
2009-08-25  5:03       ` Yinghai Lu
2009-08-25  1:26   ` Ravikiran G Thirumalai
2009-08-25  5:12     ` Yinghai Lu
2009-08-25 17:17       ` Ravikiran G Thirumalai
2009-08-25 18:15         ` Ingo Molnar
2009-08-25 18:31           ` Cyrill Gorcunov
2009-08-25 18:50             ` Yinghai Lu
2009-08-25 18:57               ` Linus Torvalds
2009-08-25 19:12                 ` Ingo Molnar
2009-08-25 19:17                   ` Yinghai Lu
2009-08-25 19:24                     ` Ingo Molnar
2009-08-25 20:36                       ` Ravikiran G Thirumalai
2009-08-25 20:44                         ` [PATCH] x86: fix vsmp booting with phys_pkg_id changing Yinghai Lu
2009-08-26  8:08                           ` Ingo Molnar [this message]
2009-08-26  8:15                           ` [tip:x86/urgent] x86: Fix vSMP boot crash tip-bot for Yinghai Lu
2009-08-25 19:53                   ` [patch] x86: 2.6.31-rc7 crash due to buggy flat_phys_pkg_id Ravikiran G Thirumalai
2009-08-25 18:59               ` Cyrill Gorcunov
2009-08-25 19:27               ` Ravikiran G Thirumalai
2009-08-25 19:33                 ` Ingo Molnar
2009-08-25 19:36                 ` Yinghai Lu
2009-08-25 19:20             ` Ravikiran G Thirumalai
2009-08-25 19:26               ` Ingo Molnar
2009-08-25 19:40               ` Cyrill Gorcunov
2009-08-25 18:35           ` Yinghai Lu

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=20090826080811.GG23435@elte.hu \
    --to=mingo@elte.hu \
    --cc=gorcunov@gmail.com \
    --cc=kiran@scalex86.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=shai@scalex86.org \
    --cc=suresh.b.siddha@intel.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=yinghai@kernel.org \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.