mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
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
|
This option compiles in support for the CE4100 SOC for settop
|
||||||
boxes and media devices.
|
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
|
config X86_MRST
|
||||||
bool "Moorestown MID platform"
|
bool "Moorestown MID platform"
|
||||||
depends on PCI
|
depends on PCI
|
||||||
depends on PCI_GOANY
|
depends on PCI_GOANY
|
||||||
depends on X86_32
|
|
||||||
depends on X86_EXTENDED_PLATFORM
|
|
||||||
depends on X86_IO_APIC
|
depends on X86_IO_APIC
|
||||||
select APB_TIMER
|
select APB_TIMER
|
||||||
select I2C
|
select I2C
|
||||||
@ -410,6 +419,8 @@ config X86_MRST
|
|||||||
nor standard legacy replacement devices/features. e.g. Moorestown does
|
nor standard legacy replacement devices/features. e.g. Moorestown does
|
||||||
not contain i8259, i8254, HPET, legacy BIOS, most of the io ports.
|
not contain i8259, i8254, HPET, legacy BIOS, most of the io ports.
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
config X86_RDC321X
|
config X86_RDC321X
|
||||||
bool "RDC R-321x SoC"
|
bool "RDC R-321x SoC"
|
||||||
depends on X86_32
|
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)
|
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) {
|
if (num_processors >= nr_cpu_ids) {
|
||||||
int max = nr_cpu_ids;
|
|
||||||
int thiscpu = max + disabled_cpus;
|
int thiscpu = max + disabled_cpus;
|
||||||
|
|
||||||
pr_warning(
|
pr_warning(
|
||||||
|
@ -62,6 +62,8 @@ static void __init check_fpu(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kernel_fpu_begin();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* trap_init() enabled FXSR and company _before_ testing for FP
|
* trap_init() enabled FXSR and company _before_ testing for FP
|
||||||
* problems here.
|
* problems here.
|
||||||
@ -80,6 +82,8 @@ static void __init check_fpu(void)
|
|||||||
: "=m" (*&fdiv_bug)
|
: "=m" (*&fdiv_bug)
|
||||||
: "m" (*&x), "m" (*&y));
|
: "m" (*&x), "m" (*&y));
|
||||||
|
|
||||||
|
kernel_fpu_end();
|
||||||
|
|
||||||
boot_cpu_data.fdiv_bug = fdiv_bug;
|
boot_cpu_data.fdiv_bug = fdiv_bug;
|
||||||
if (boot_cpu_data.fdiv_bug)
|
if (boot_cpu_data.fdiv_bug)
|
||||||
printk(KERN_WARNING "Hmm, FPU with FDIV bug.\n");
|
printk(KERN_WARNING "Hmm, FPU with FDIV bug.\n");
|
||||||
|
@ -32,11 +32,11 @@
|
|||||||
*/
|
*/
|
||||||
static const __initconst struct hypervisor_x86 * const hypervisors[] =
|
static const __initconst struct hypervisor_x86 * const hypervisors[] =
|
||||||
{
|
{
|
||||||
&x86_hyper_vmware,
|
|
||||||
&x86_hyper_ms_hyperv,
|
|
||||||
#ifdef CONFIG_XEN_PVHVM
|
#ifdef CONFIG_XEN_PVHVM
|
||||||
&x86_hyper_xen_hvm,
|
&x86_hyper_xen_hvm,
|
||||||
#endif
|
#endif
|
||||||
|
&x86_hyper_vmware,
|
||||||
|
&x86_hyper_ms_hyperv,
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct hypervisor_x86 *x86_hyper;
|
const struct hypervisor_x86 *x86_hyper;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
static void __devinit quirk_intel_irqbalance(struct pci_dev *dev)
|
static void __devinit quirk_intel_irqbalance(struct pci_dev *dev)
|
||||||
{
|
{
|
||||||
u8 config, rev;
|
u8 config;
|
||||||
u16 word;
|
u16 word;
|
||||||
|
|
||||||
/* BIOS may enable hardware IRQ balancing for
|
/* BIOS may enable hardware IRQ balancing for
|
||||||
@ -18,8 +18,7 @@ static void __devinit quirk_intel_irqbalance(struct pci_dev *dev)
|
|||||||
* based platforms.
|
* based platforms.
|
||||||
* Disable SW irqbalance/affinity on those platforms.
|
* Disable SW irqbalance/affinity on those platforms.
|
||||||
*/
|
*/
|
||||||
pci_read_config_byte(dev, PCI_CLASS_REVISION, &rev);
|
if (dev->revision > 0x9)
|
||||||
if (rev > 0x9)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* enable access to config space*/
|
/* enable access to config space*/
|
||||||
|
@ -97,6 +97,8 @@ relocate_kernel:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
identity_mapped:
|
identity_mapped:
|
||||||
|
/* set return address to 0 if not preserving context */
|
||||||
|
pushl $0
|
||||||
/* store the start address on the stack */
|
/* store the start address on the stack */
|
||||||
pushl %edx
|
pushl %edx
|
||||||
|
|
||||||
|
@ -100,6 +100,8 @@ relocate_kernel:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
identity_mapped:
|
identity_mapped:
|
||||||
|
/* set return address to 0 if not preserving context */
|
||||||
|
pushq $0
|
||||||
/* store the start address on the stack */
|
/* store the start address on the stack */
|
||||||
pushq %rdx
|
pushq %rdx
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
#include <linux/timer.h>
|
#include <linux/timer.h>
|
||||||
#include <linux/acpi_pmtmr.h>
|
#include <linux/acpi_pmtmr.h>
|
||||||
#include <linux/cpufreq.h>
|
#include <linux/cpufreq.h>
|
||||||
#include <linux/dmi.h>
|
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/clocksource.h>
|
#include <linux/clocksource.h>
|
||||||
#include <linux/percpu.h>
|
#include <linux/percpu.h>
|
||||||
@ -800,27 +799,6 @@ void mark_tsc_unstable(char *reason)
|
|||||||
|
|
||||||
EXPORT_SYMBOL_GPL(mark_tsc_unstable);
|
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)
|
static void __init check_system_tsc_reliable(void)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_MGEODE_LX
|
#ifdef CONFIG_MGEODE_LX
|
||||||
@ -1010,8 +988,6 @@ void __init tsc_init(void)
|
|||||||
lpj_fine = lpj;
|
lpj_fine = lpj;
|
||||||
|
|
||||||
use_tsc_delay();
|
use_tsc_delay();
|
||||||
/* Check and install the TSC clocksource */
|
|
||||||
dmi_check_system(bad_tsc_dmi_table);
|
|
||||||
|
|
||||||
if (unsynchronized_tsc())
|
if (unsynchronized_tsc())
|
||||||
mark_tsc_unstable("TSCs unsynchronized");
|
mark_tsc_unstable("TSCs unsynchronized");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user