mirror of https://gitee.com/openkylin/linux.git
Merge branches 'x86-detect-hyper-for-linus', 'x86-fpu-for-linus', 'x86-kexec-for-linus', 'x86-platform-for-linus', 'x86-quirks-for-linus', 'x86-tsc-for-linus' and 'x86-smpboot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-detect-hyper-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: x86, hyper: Change hypervisor detection order * 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: x86-32, fpu: Fix DNA exception during check_fpu() * 'x86-kexec-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: kexec, x86: Fix incorrect jump back address if not preserving context * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: x86, config: Introduce an INTEL_MID configuration * 'x86-quirks-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: x86, quirks: Use pci_dev->revision * 'x86-tsc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: x86: tsc: Remove unneeded DMI-based blacklisting * 'x86-smpboot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: x86, boot: Wait for boot cpu to show up if nr_cpus limit is about to hit
This commit is contained in:
commit
b4db920c7f
|
@ -390,12 +390,21 @@ config X86_INTEL_CE
|
|||
This option compiles in support for the CE4100 SOC for settop
|
||||
boxes and media devices.
|
||||
|
||||
config X86_INTEL_MID
|
||||
bool "Intel MID platform support"
|
||||
depends on X86_32
|
||||
depends on X86_EXTENDED_PLATFORM
|
||||
---help---
|
||||
Select to build a kernel capable of supporting Intel MID platform
|
||||
systems which do not have the PCI legacy interfaces (Moorestown,
|
||||
Medfield). If you are building for a PC class system say N here.
|
||||
|
||||
if X86_INTEL_MID
|
||||
|
||||
config X86_MRST
|
||||
bool "Moorestown MID platform"
|
||||
depends on PCI
|
||||
depends on PCI_GOANY
|
||||
depends on X86_32
|
||||
depends on X86_EXTENDED_PLATFORM
|
||||
depends on X86_IO_APIC
|
||||
select APB_TIMER
|
||||
select I2C
|
||||
|
@ -410,6 +419,8 @@ config X86_MRST
|
|||
nor standard legacy replacement devices/features. e.g. Moorestown does
|
||||
not contain i8259, i8254, HPET, legacy BIOS, most of the io ports.
|
||||
|
||||
endif
|
||||
|
||||
config X86_RDC321X
|
||||
bool "RDC R-321x SoC"
|
||||
depends on X86_32
|
||||
|
|
|
@ -1944,10 +1944,28 @@ void disconnect_bsp_APIC(int virt_wire_setup)
|
|||
|
||||
void __cpuinit generic_processor_info(int apicid, int version)
|
||||
{
|
||||
int cpu;
|
||||
int cpu, max = nr_cpu_ids;
|
||||
bool boot_cpu_detected = physid_isset(boot_cpu_physical_apicid,
|
||||
phys_cpu_present_map);
|
||||
|
||||
/*
|
||||
* If boot cpu has not been detected yet, then only allow upto
|
||||
* nr_cpu_ids - 1 processors and keep one slot free for boot cpu
|
||||
*/
|
||||
if (!boot_cpu_detected && num_processors >= nr_cpu_ids - 1 &&
|
||||
apicid != boot_cpu_physical_apicid) {
|
||||
int thiscpu = max + disabled_cpus - 1;
|
||||
|
||||
pr_warning(
|
||||
"ACPI: NR_CPUS/possible_cpus limit of %i almost"
|
||||
" reached. Keeping one slot for boot cpu."
|
||||
" Processor %d/0x%x ignored.\n", max, thiscpu, apicid);
|
||||
|
||||
disabled_cpus++;
|
||||
return;
|
||||
}
|
||||
|
||||
if (num_processors >= nr_cpu_ids) {
|
||||
int max = nr_cpu_ids;
|
||||
int thiscpu = max + disabled_cpus;
|
||||
|
||||
pr_warning(
|
||||
|
|
|
@ -62,6 +62,8 @@ static void __init check_fpu(void)
|
|||
return;
|
||||
}
|
||||
|
||||
kernel_fpu_begin();
|
||||
|
||||
/*
|
||||
* trap_init() enabled FXSR and company _before_ testing for FP
|
||||
* problems here.
|
||||
|
@ -80,6 +82,8 @@ static void __init check_fpu(void)
|
|||
: "=m" (*&fdiv_bug)
|
||||
: "m" (*&x), "m" (*&y));
|
||||
|
||||
kernel_fpu_end();
|
||||
|
||||
boot_cpu_data.fdiv_bug = fdiv_bug;
|
||||
if (boot_cpu_data.fdiv_bug)
|
||||
printk(KERN_WARNING "Hmm, FPU with FDIV bug.\n");
|
||||
|
|
|
@ -32,11 +32,11 @@
|
|||
*/
|
||||
static const __initconst struct hypervisor_x86 * const hypervisors[] =
|
||||
{
|
||||
&x86_hyper_vmware,
|
||||
&x86_hyper_ms_hyperv,
|
||||
#ifdef CONFIG_XEN_PVHVM
|
||||
&x86_hyper_xen_hvm,
|
||||
#endif
|
||||
&x86_hyper_vmware,
|
||||
&x86_hyper_ms_hyperv,
|
||||
};
|
||||
|
||||
const struct hypervisor_x86 *x86_hyper;
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
static void __devinit quirk_intel_irqbalance(struct pci_dev *dev)
|
||||
{
|
||||
u8 config, rev;
|
||||
u8 config;
|
||||
u16 word;
|
||||
|
||||
/* BIOS may enable hardware IRQ balancing for
|
||||
|
@ -18,8 +18,7 @@ static void __devinit quirk_intel_irqbalance(struct pci_dev *dev)
|
|||
* based platforms.
|
||||
* Disable SW irqbalance/affinity on those platforms.
|
||||
*/
|
||||
pci_read_config_byte(dev, PCI_CLASS_REVISION, &rev);
|
||||
if (rev > 0x9)
|
||||
if (dev->revision > 0x9)
|
||||
return;
|
||||
|
||||
/* enable access to config space*/
|
||||
|
|
|
@ -97,6 +97,8 @@ relocate_kernel:
|
|||
ret
|
||||
|
||||
identity_mapped:
|
||||
/* set return address to 0 if not preserving context */
|
||||
pushl $0
|
||||
/* store the start address on the stack */
|
||||
pushl %edx
|
||||
|
||||
|
|
|
@ -100,6 +100,8 @@ relocate_kernel:
|
|||
ret
|
||||
|
||||
identity_mapped:
|
||||
/* set return address to 0 if not preserving context */
|
||||
pushq $0
|
||||
/* store the start address on the stack */
|
||||
pushq %rdx
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
#include <linux/timer.h>
|
||||
#include <linux/acpi_pmtmr.h>
|
||||
#include <linux/cpufreq.h>
|
||||
#include <linux/dmi.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/clocksource.h>
|
||||
#include <linux/percpu.h>
|
||||
|
@ -800,27 +799,6 @@ void mark_tsc_unstable(char *reason)
|
|||
|
||||
EXPORT_SYMBOL_GPL(mark_tsc_unstable);
|
||||
|
||||
static int __init dmi_mark_tsc_unstable(const struct dmi_system_id *d)
|
||||
{
|
||||
printk(KERN_NOTICE "%s detected: marking TSC unstable.\n",
|
||||
d->ident);
|
||||
tsc_unstable = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* List of systems that have known TSC problems */
|
||||
static struct dmi_system_id __initdata bad_tsc_dmi_table[] = {
|
||||
{
|
||||
.callback = dmi_mark_tsc_unstable,
|
||||
.ident = "IBM Thinkpad 380XD",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
|
||||
DMI_MATCH(DMI_BOARD_NAME, "2635FA0"),
|
||||
},
|
||||
},
|
||||
{}
|
||||
};
|
||||
|
||||
static void __init check_system_tsc_reliable(void)
|
||||
{
|
||||
#ifdef CONFIG_MGEODE_LX
|
||||
|
@ -1010,8 +988,6 @@ void __init tsc_init(void)
|
|||
lpj_fine = lpj;
|
||||
|
||||
use_tsc_delay();
|
||||
/* Check and install the TSC clocksource */
|
||||
dmi_check_system(bad_tsc_dmi_table);
|
||||
|
||||
if (unsynchronized_tsc())
|
||||
mark_tsc_unstable("TSCs unsynchronized");
|
||||
|
|
Loading…
Reference in New Issue