From: Ido Yariv <ido@wizery.com>
To: linux-kernel@vger.kernel.org, Ingo Molnar <mingo@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
"H. Peter Anvin" <hpa@zytor.com>
Cc: Shai Fultheim <shai@scalemp.com>, Ido Yariv <ido@wizery.com>
Subject: [PATCH 1/2] x86: Introduce apic post-initialization callback
Date: Sun, 3 Jun 2012 01:11:34 +0300 [thread overview]
Message-ID: <1338675095-27260-1-git-send-email-ido@wizery.com> (raw)
In-Reply-To: <20120509212117.GA32594@NoteStation.guest.lab126.com>
Some architectures (such as vSMP) need to slightly adjust the underlying
apic structure. Add an apic post-initialization to x86_platform_ops for
this purpose and use it for adjusting the apic structure on vSMP
systems.
Signed-off-by: Ido Yariv <ido@wizery.com>
Acked-by: Shai Fultheim <shai@scalemp.com>
---
arch/x86/include/asm/x86_init.h | 2 ++
arch/x86/kernel/apic/probe_32.c | 3 +++
arch/x86/kernel/apic/probe_64.c | 11 ++---------
arch/x86/kernel/vsmp_64.c | 13 +++++++++++++
4 files changed, 20 insertions(+), 9 deletions(-)
diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h
index c090af1..c377d9c 100644
--- a/arch/x86/include/asm/x86_init.h
+++ b/arch/x86/include/asm/x86_init.h
@@ -164,6 +164,7 @@ struct x86_cpuinit_ops {
* @i8042_detect pre-detect if i8042 controller exists
* @save_sched_clock_state: save state for sched_clock() on suspend
* @restore_sched_clock_state: restore state for sched_clock() on resume
+ * @apic_post_init: adjust apic if neeeded
*/
struct x86_platform_ops {
unsigned long (*calibrate_tsc)(void);
@@ -177,6 +178,7 @@ struct x86_platform_ops {
int (*i8042_detect)(void);
void (*save_sched_clock_state)(void);
void (*restore_sched_clock_state)(void);
+ void (*apic_post_init)(void);
};
struct pci_dev;
diff --git a/arch/x86/kernel/apic/probe_32.c b/arch/x86/kernel/apic/probe_32.c
index 1b291da..8616d51 100644
--- a/arch/x86/kernel/apic/probe_32.c
+++ b/arch/x86/kernel/apic/probe_32.c
@@ -208,6 +208,9 @@ void __init default_setup_apic_routing(void)
if (apic->setup_apic_routing)
apic->setup_apic_routing();
+
+ if (x86_platform.apic_post_init)
+ x86_platform.apic_post_init();
}
void __init generic_apic_probe(void)
diff --git a/arch/x86/kernel/apic/probe_64.c b/arch/x86/kernel/apic/probe_64.c
index 3fe9866..1793dba 100644
--- a/arch/x86/kernel/apic/probe_64.c
+++ b/arch/x86/kernel/apic/probe_64.c
@@ -23,11 +23,6 @@
#include <asm/ipi.h>
#include <asm/setup.h>
-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.
*/
@@ -48,10 +43,8 @@ void __init default_setup_apic_routing(void)
}
}
- if (is_vsmp_box()) {
- /* need to update phys_pkg_id */
- apic->phys_pkg_id = apicid_phys_pkg_id;
- }
+ if (x86_platform.apic_post_init)
+ x86_platform.apic_post_init();
}
/* Same for both flat and physical. */
diff --git a/arch/x86/kernel/vsmp_64.c b/arch/x86/kernel/vsmp_64.c
index 8eeb55a..59eea85 100644
--- a/arch/x86/kernel/vsmp_64.c
+++ b/arch/x86/kernel/vsmp_64.c
@@ -187,12 +187,25 @@ static void __init vsmp_cap_cpus(void)
#endif
}
+static int apicid_phys_pkg_id(int initial_apic_id, int index_msb)
+{
+ return hard_smp_processor_id() >> index_msb;
+}
+
+static void vsmp_apic_post_init(void)
+{
+ /* need to update phys_pkg_id */
+ apic->phys_pkg_id = apicid_phys_pkg_id;
+}
+
void __init vsmp_init(void)
{
detect_vsmp_box();
if (!is_vsmp_box())
return;
+ x86_platform.apic_post_init = vsmp_apic_post_init;
+
vsmp_cap_cpus();
set_vsmp_pv_ops();
--
1.7.7.6
next prev parent reply other threads:[~2012-06-02 22:11 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-06 12:39 [PATCH 1/2] vsmp: Fix number of CPUs when vsmp is disabled Ido Yariv
2012-04-06 12:39 ` [PATCH 2/2] vsmp: Ignore IOAPIC IRQ affinity if possible Ido Yariv
2012-04-16 7:39 ` [PATCH v2 1/2] vsmp: Fix number of CPUs when vsmp is disabled Ido Yariv
2012-04-16 7:39 ` [PATCH v2 2/2] vsmp: Ignore IOAPIC IRQ affinity if possible Ido Yariv
2012-05-07 13:19 ` Ingo Molnar
2012-05-08 0:53 ` Shai Fultheim (Shai@ScaleMP.com)
2012-05-09 9:18 ` Ingo Molnar
2012-05-09 21:21 ` Ido Yariv
2012-06-02 22:11 ` Ido Yariv [this message]
2012-06-02 22:11 ` [PATCH v3 " Ido Yariv
2012-06-06 15:02 ` [tip:x86/platform] x86/vsmp: " tip-bot for Ravikiran Thirumalai
2012-06-08 8:52 ` Ingo Molnar
2012-06-08 15:43 ` Ido Yariv
2012-06-11 8:58 ` Ingo Molnar
2012-06-11 19:41 ` Ido Yariv
2012-06-14 10:51 ` Ingo Molnar
2012-06-14 15:43 ` [PATCH] x86/vsmp: Fix linker error when CONFIG_PROC_FS is not set Ido Yariv
2012-06-15 14:22 ` [tip:x86/platform] " tip-bot for Ido Yariv
2012-06-06 15:01 ` [tip:x86/platform] x86/platform: Introduce APIC post-initialization callback tip-bot for Ido Yariv
2012-06-14 17:34 ` H. Peter Anvin
2012-06-15 14:33 ` Ido Yariv
2012-04-28 21:33 ` [PATCH v2 1/2] vsmp: Fix number of CPUs when vsmp is disabled Ido Yariv
2012-04-29 3:05 ` Shai Fultheim (Shai@ScaleMP.com)
2012-05-07 13:24 ` Ingo Molnar
2012-05-08 7:34 ` [PATCH v3] " Ido Yariv
2012-05-08 10:05 ` [tip:x86/platform] " tip-bot for Shai Fultheim
2012-05-08 12:25 ` Ingo Molnar
2012-05-09 8:03 ` Ido Yariv
2012-05-09 8:22 ` Ido Yariv
2012-05-09 8:28 ` [PATCH v4] " Ido Yariv
2012-05-09 15:44 ` Ingo Molnar
2012-05-09 15:55 ` H. Peter Anvin
2012-05-11 19:26 ` Ido Yariv
2012-05-12 1:20 ` Shai Fultheim (Shai@ScaleMP.com)
2012-05-09 9:12 ` [tip:x86/platform] " Ingo Molnar
2012-05-09 15:27 ` Shai Fultheim (Shai@ScaleMP.com)
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=1338675095-27260-1-git-send-email-ido@wizery.com \
--to=ido@wizery.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=shai@scalemp.com \
--cc=tglx@linutronix.de \
/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).