From: Ravikiran G Thirumalai <kiran@scalex86.org>
To: Andrew Morton <akpm@linux-foundation.org>, Ingo Molnar <mingo@elte.hu>
Cc: linux-kernel@vger.kernel.org,
Glauber de Oliveira Costa <gcosta@redhat.com>,
Andi Kleen <ak@suse.de>,
shai@scalex86.org
Subject: [patch 2/4] x86: Fix build breakage when PCI is define and PARAVIRT is not
Date: Thu, 20 Mar 2008 00:41:16 -0700 [thread overview]
Message-ID: <20080320074116.GC9414@localdomain> (raw)
In-Reply-To: <20080320073740.GA9414@localdomain>
- Fix the the build breakage when PARAVIRT is defined
but PCI is not
This fixes problem reported at:
http://marc.info/?l=linux-kernel&m=120525966600698&w=2
- Make is_vsmp_box() available even when PARAVIRT is not defined.
This is needed to determine if tsc's are reliable as a time source
even when PARAVIRT is not defined.
- split vsmp_init to use is_vsmp_box() and set_vsmp_pv_ops()
set_vsmp_pv_ops will do nothing if PCI is not enabled in the config.
Signed-off-by: Ravikiran Thirumalai <kiran@scalex86.org>
Index: linux.git.trees/arch/x86/kernel/Makefile
===================================================================
--- linux.git.trees.orig/arch/x86/kernel/Makefile 2008-03-19 13:39:29.000000000 -0700
+++ linux.git.trees/arch/x86/kernel/Makefile 2008-03-19 13:46:14.400935607 -0700
@@ -60,7 +60,7 @@ obj-$(CONFIG_KEXEC) += relocate_kernel_
obj-$(CONFIG_CRASH_DUMP) += crash_dump_$(BITS).o
obj-$(CONFIG_X86_NUMAQ) += numaq_32.o
obj-$(CONFIG_X86_SUMMIT_NUMA) += summit_32.o
-obj-$(CONFIG_PARAVIRT) += vsmp_64.o
+obj-y += vsmp_64.o
obj-$(CONFIG_KPROBES) += kprobes.o
obj-$(CONFIG_MODULES) += module_$(BITS).o
obj-$(CONFIG_ACPI_SRAT) += srat_32.o
Index: linux.git.trees/arch/x86/kernel/setup_64.c
===================================================================
--- linux.git.trees.orig/arch/x86/kernel/setup_64.c 2008-03-19 13:39:29.000000000 -0700
+++ linux.git.trees/arch/x86/kernel/setup_64.c 2008-03-19 13:57:43.951337318 -0700
@@ -353,9 +353,7 @@ void __init setup_arch(char **cmdline_p)
if (efi_enabled)
efi_init();
-#ifdef CONFIG_PARAVIRT
vsmp_init();
-#endif
dmi_scan_machine();
Index: linux.git.trees/arch/x86/kernel/vsmp_64.c
===================================================================
--- linux.git.trees.orig/arch/x86/kernel/vsmp_64.c 2008-03-19 13:39:50.000000000 -0700
+++ linux.git.trees/arch/x86/kernel/vsmp_64.c 2008-03-19 20:53:34.267707163 -0700
@@ -19,6 +19,7 @@
#include <asm/io.h>
#include <asm/paravirt.h>
+#if defined CONFIG_PCI && defined CONFIG_PARAVIRT
/*
* Interrupt control on vSMPowered systems:
* ~AC is a shadow of IF. If IF is 'on' AC should be 'off'
@@ -72,39 +73,11 @@ static unsigned __init vsmp_patch(u8 typ
}
-static int vsmp = -1;
-
-int is_vsmp_box(void)
-{
- if (vsmp != -1)
- return vsmp;
-
- vsmp = 0;
- if (!early_pci_allowed())
- return vsmp;
-
- /* Check if we are running on a ScaleMP vSMP box */
- if ((read_pci_config_16(0, 0x1f, 0, PCI_VENDOR_ID) ==
- PCI_VENDOR_ID_SCALEMP) &&
- (read_pci_config_16(0, 0x1f, 0, PCI_DEVICE_ID) ==
- PCI_DEVICE_ID_SCALEMP_VSMP_CTL))
- vsmp = 1;
-
- return vsmp;
-}
-
-void __init vsmp_init(void)
+static void __init set_vsmp_pv_ops(void)
{
void *address;
unsigned int cap, ctl, cfg;
- if (!is_vsmp_box())
- return;
-
- if (!early_pci_allowed())
- return;
-
- /* If we are, use the distinguished irq functions */
pv_irq_ops.irq_disable = vsmp_irq_disable;
pv_irq_ops.irq_enable = vsmp_irq_enable;
pv_irq_ops.save_fl = vsmp_save_fl;
@@ -127,5 +100,46 @@ void __init vsmp_init(void)
}
early_iounmap(address, 8);
+}
+#else
+static void __init set_vsmp_pv_ops(void)
+{
+}
+#endif
+
+#ifdef CONFIG_PCI
+static int vsmp = -1;
+
+int is_vsmp_box(void)
+{
+ if (vsmp != -1)
+ return vsmp;
+
+ vsmp = 0;
+ if (!early_pci_allowed())
+ return vsmp;
+
+ /* Check if we are running on a ScaleMP vSMP box */
+ if ((read_pci_config_16(0, 0x1f, 0, PCI_VENDOR_ID) ==
+ PCI_VENDOR_ID_SCALEMP) &&
+ (read_pci_config_16(0, 0x1f, 0, PCI_DEVICE_ID) ==
+ PCI_DEVICE_ID_SCALEMP_VSMP_CTL))
+ vsmp = 1;
+
+ return vsmp;
+}
+#else
+int is_vsmp_box(void)
+{
+ return 0;
+}
+#endif
+
+void __init vsmp_init(void)
+{
+ if (!is_vsmp_box())
+ return;
+
+ set_vsmp_pv_ops();
return;
}
Index: linux.git.trees/include/asm-x86/apic.h
===================================================================
--- linux.git.trees.orig/include/asm-x86/apic.h 2008-03-19 13:39:29.000000000 -0700
+++ linux.git.trees/include/asm-x86/apic.h 2008-03-19 13:57:14.550893819 -0700
@@ -51,19 +51,16 @@ extern unsigned boot_cpu_id;
*/
#ifdef CONFIG_PARAVIRT
#include <asm/paravirt.h>
-extern int is_vsmp_box(void);
#else
#define apic_write native_apic_write
#define apic_write_atomic native_apic_write_atomic
#define apic_read native_apic_read
#define setup_boot_clock setup_boot_APIC_clock
#define setup_secondary_clock setup_secondary_APIC_clock
-static int inline is_vsmp_box(void)
-{
- return 0;
-}
#endif
+extern int is_vsmp_box(void);
+
static inline void native_apic_write(unsigned long reg, u32 v)
{
*((volatile u32 *)(APIC_BASE + reg)) = v;
next prev parent reply other threads:[~2008-03-20 7:42 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-20 7:37 [patch 0/4] x86: vSMP updates Ravikiran G Thirumalai
2008-03-20 7:39 ` [patch 1/4] x86: vSMP: Fix is_vsmp_box() Ravikiran G Thirumalai
2008-03-20 7:44 ` Yinghai Lu
2008-03-20 18:40 ` Ravikiran G Thirumalai
2008-03-21 9:11 ` Ingo Molnar
2008-03-21 9:17 ` Yinghai Lu
2008-03-21 17:59 ` Ravikiran G Thirumalai
2008-03-20 7:41 ` Ravikiran G Thirumalai [this message]
2008-03-21 4:30 ` [patch 2/4] x86: Fix build breakage when PCI is define and PARAVIRT is not Jeremy Fitzhardinge
2008-03-21 6:28 ` Yinghai Lu
2008-03-21 18:54 ` Ravikiran G Thirumalai
2008-03-22 2:19 ` Jeremy Fitzhardinge
2008-03-20 7:43 ` [patch 3/4] x86: vSMP: Use pvops only if platform has the capability to support it Ravikiran G Thirumalai
2008-03-20 7:45 ` [patch 4/4] x86: apic_is_clustered_box to indicate unsynched TSC's on multiboard vSMP systems Ravikiran G Thirumalai
2008-03-20 7:53 ` Yinghai Lu
2008-03-20 19:02 ` Ravikiran G Thirumalai
2008-03-21 9:15 ` Ingo Molnar
2008-03-21 18:52 ` Ravikiran G Thirumalai
2008-03-21 18:58 ` Ingo Molnar
2008-03-22 18:59 ` Ravikiran G Thirumalai
2008-03-22 20:02 ` Ingo Molnar
2008-03-24 21:48 ` Ravikiran G Thirumalai
2008-03-25 15:50 ` Ingo Molnar
2008-03-21 8:54 ` [patch 0/4] x86: vSMP updates Ingo Molnar
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=20080320074116.GC9414@localdomain \
--to=kiran@scalex86.org \
--cc=ak@suse.de \
--cc=akpm@linux-foundation.org \
--cc=gcosta@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=shai@scalex86.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