linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Wang, Song-Bo (Stoney)" <song-bo.wang@hp.com>
To: "yinghai@kernel.org" <yinghai@kernel.org>,
	"hpa@zytor.com" <hpa@zytor.com>
Cc: "Zhang, Lin-Bao (Linux Kernel R&D)" <linbao.zhang@hp.com>,
	"Pearson, Greg" <greg.pearson@hp.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"suresh.b.siddha@intel.com" <suresh.b.siddha@intel.com>
Subject: RE: [PATCH] x86/apic: check FADT settings after enable x2apic
Date: Mon, 28 Jan 2013 05:05:32 +0000	[thread overview]
Message-ID: <FE3E8B88161FFE48B03E3B93408433EC671016E2@G9W0754.americas.hpqcorp.net> (raw)
In-Reply-To: <1358214636-4801-1-git-send-email-song-bo.wang@hp.com>

Hi Yinghai, hpa and others,

Would you please review the patch on detecting x2apic FADT settings?

We meet a BIOS system which works on x2apic physical mode by setting the bit ACPI_FADT_APIC_PHYSICAL in FADT table.
And for those systems with all cpuid < 255, the spec requires BIOS's default mode in xapic.
The kernel detects the default mode and do some initializations and will call enable_IR_x2apic and change the mode to x2apic successfully.

So it is necessary to check ACPI_FADT_APIC_PHYSICAL bit after the kernel change the mode from xapic to x2apic.

(*drv)->acpi_madt_oem_check is called on detect default BIOS mode,
(*drv)->probe is called after enable_IR_x2apic,

The previous FADT check (commit ea0dcf90) should be applied to x2apic_phys_probe too.

Thanks,
Stoney

-----Original Message-----
From: Wang, Song-Bo (Stoney) 
Sent: Tuesday, January 15, 2013 9:51 AM
To: suresh.b.siddha@intel.com
Cc: Zhang, Lin-Bao (Linux Kernel R&D); Pearson, Greg; linux-kernel@vger.kernel.org; Wang, Song-Bo (Stoney)
Subject: [PATCH] x86/apic: check FADT settings after enable x2apic

OS will enable x2apic mode even BIOS default in xapic mode.

FADT settings check (commit ea0dcf903e7d76aa5d483d876215fedcfdfe140f)
should be applied after detect default mode and change the mode (enable_IR_x2apic called)

Signed-off-by: Stoney Wang <song-bo.wang@hp.com>
---
 arch/x86/kernel/apic/x2apic_phys.c |   25 ++++++++++++++++---------
 1 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/arch/x86/kernel/apic/x2apic_phys.c b/arch/x86/kernel/apic/x2apic_phys.c
index e03a1e1..76ea60d 100644
--- a/arch/x86/kernel/apic/x2apic_phys.c
+++ b/arch/x86/kernel/apic/x2apic_phys.c
@@ -20,18 +20,22 @@ static int set_x2apic_phys_mode(char *arg)  }  early_param("x2apic_phys", set_x2apic_phys_mode);
 
-static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
+static int x2apic_fadt_phys(void)
 {
-	if (x2apic_phys)
-		return x2apic_enabled();
-	else if ((acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID) &&
-		(acpi_gbl_FADT.flags & ACPI_FADT_APIC_PHYSICAL) &&
-		x2apic_enabled()) {
+	if ((acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID) &&
+		(acpi_gbl_FADT.flags & ACPI_FADT_APIC_PHYSICAL)) {
 		printk(KERN_DEBUG "System requires x2apic physical mode\n");
 		return 1;
 	}
-	else
-		return 0;
+	return 0;
+}
+
+static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id) 
+{
+	if (x2apic_enabled())
+		return x2apic_phys || x2apic_fadt_phys();
+
+	return 0;
 }
 
 static void
@@ -85,7 +89,10 @@ static int x2apic_phys_probe(void)
 	if (x2apic_mode && x2apic_phys)
 		return 1;
 
-	return apic == &apic_x2apic_phys;
+	if (apic == &apic_x2apic_phys)
+		return 1;
+
+	return x2apic_enabled() && x2apic_fadt_phys();
 }
 
 static struct apic apic_x2apic_phys = {
--
1.7.1


  reply	other threads:[~2013-01-28  5:05 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-15  1:50 [PATCH] x86/apic: check FADT settings after enable x2apic Stoney Wang
2013-01-28  5:05 ` Wang, Song-Bo (Stoney) [this message]
2013-01-28  6:57   ` Yinghai Lu
2013-01-28 10:11     ` Ingo Molnar
2013-01-28 18:10       ` Yinghai Lu
2013-01-29  7:47         ` Ingo Molnar
2013-01-29  8:43           ` Wang, Song-Bo (Stoney)
2013-01-29  8:49             ` Ingo Molnar
2013-01-29 21:30               ` Yinghai Lu
2013-01-29 21:52               ` Yinghai Lu
2013-01-31 11:32                 ` Ingo Molnar
2013-01-31 15:56                   ` Yinghai Lu
2013-02-04  6:41                   ` Wang, Song-Bo (Stoney)
2013-02-04 11:03                     ` Ingo Molnar
2013-02-04 20:29                       ` [PATCH] x86, apic: Check fadt x2apic phys in x2apic_phys_probe() Yinghai Lu
2013-02-05 12:24                         ` Ingo Molnar
2013-02-05 16:53                           ` Yinghai Lu
2013-02-06 13:16                             ` Ingo Molnar
2013-02-06 17:10                               ` Yinghai Lu
2013-02-07 18:53                                 ` [PATCH v4] " Yinghai Lu
2013-02-11 12:37                                   ` [tip:x86/urgent] x86/apic: Work around boot failure on HP ProLiant DL980 G7 Server systems tip-bot for Stoney Wang
2013-02-18  8:52                                   ` [PATCH v4] x86, apic: Check fadt x2apic phys in x2apic_phys_probe() Lin-Bao Zhang
2013-02-18 17:13                                     ` 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=FE3E8B88161FFE48B03E3B93408433EC671016E2@G9W0754.americas.hpqcorp.net \
    --to=song-bo.wang@hp.com \
    --cc=greg.pearson@hp.com \
    --cc=hpa@zytor.com \
    --cc=linbao.zhang@hp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=suresh.b.siddha@intel.com \
    --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 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).