Merge branch 'linus' into perf/core
Merge reason: Pick up the latest perf fixes. Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
@@ -921,7 +921,7 @@ void disable_local_APIC(void)
|
||||
unsigned int value;
|
||||
|
||||
/* APIC hasn't been mapped yet */
|
||||
if (!apic_phys)
|
||||
if (!x2apic_mode && !apic_phys)
|
||||
return;
|
||||
|
||||
clear_local_APIC();
|
||||
|
@@ -18,6 +18,7 @@
|
||||
#include <asm/apic.h>
|
||||
#include <asm/iommu.h>
|
||||
#include <asm/gart.h>
|
||||
#include <asm/hpet.h>
|
||||
|
||||
static void __init fix_hypertransport_config(int num, int slot, int func)
|
||||
{
|
||||
@@ -191,6 +192,21 @@ static void __init ati_bugs_contd(int num, int slot, int func)
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Force the read back of the CMP register in hpet_next_event()
|
||||
* to work around the problem that the CMP register write seems to be
|
||||
* delayed. See hpet_next_event() for details.
|
||||
*
|
||||
* We do this on all SMBUS incarnations for now until we have more
|
||||
* information about the affected chipsets.
|
||||
*/
|
||||
static void __init ati_hpet_bugs(int num, int slot, int func)
|
||||
{
|
||||
#ifdef CONFIG_HPET_TIMER
|
||||
hpet_readback_cmp = 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
#define QFLAG_APPLY_ONCE 0x1
|
||||
#define QFLAG_APPLIED 0x2
|
||||
#define QFLAG_DONE (QFLAG_APPLY_ONCE|QFLAG_APPLIED)
|
||||
@@ -220,6 +236,8 @@ static struct chipset early_qrk[] __initdata = {
|
||||
PCI_CLASS_SERIAL_SMBUS, PCI_ANY_ID, 0, ati_bugs },
|
||||
{ PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS,
|
||||
PCI_CLASS_SERIAL_SMBUS, PCI_ANY_ID, 0, ati_bugs_contd },
|
||||
{ PCI_VENDOR_ID_ATI, PCI_ANY_ID,
|
||||
PCI_CLASS_SERIAL_SMBUS, PCI_ANY_ID, 0, ati_hpet_bugs },
|
||||
{}
|
||||
};
|
||||
|
||||
|
@@ -642,8 +642,8 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
|
||||
/* Skip cs, ip, orig_ax and gs. */ \
|
||||
" subl $16, %esp\n" \
|
||||
" pushl %fs\n" \
|
||||
" pushl %ds\n" \
|
||||
" pushl %es\n" \
|
||||
" pushl %ds\n" \
|
||||
" pushl %eax\n" \
|
||||
" pushl %ebp\n" \
|
||||
" pushl %edi\n" \
|
||||
|
@@ -216,6 +216,12 @@ static void __init mrst_setup_boot_clock(void)
|
||||
setup_boot_APIC_clock();
|
||||
};
|
||||
|
||||
/* MID systems don't have i8042 controller */
|
||||
static int mrst_i8042_detect(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Moorestown specific x86_init function overrides and early setup
|
||||
* calls.
|
||||
@@ -233,6 +239,7 @@ void __init x86_mrst_early_setup(void)
|
||||
x86_cpuinit.setup_percpu_clockev = mrst_setup_secondary_clock;
|
||||
|
||||
x86_platform.calibrate_tsc = mrst_calibrate_tsc;
|
||||
x86_platform.i8042_detect = mrst_i8042_detect;
|
||||
x86_init.pci.init = pci_mrst_init;
|
||||
x86_init.pci.fixup_irqs = x86_init_noop;
|
||||
|
||||
|
@@ -110,7 +110,7 @@ int use_calgary __read_mostly = 0;
|
||||
* x3950 (PCIE): 8 chassis, 32 PHBs per chassis = 256
|
||||
* x3950 (PCIX): 8 chassis, 16 PHBs per chassis = 128
|
||||
*/
|
||||
#define MAX_PHB_BUS_NUM 384
|
||||
#define MAX_PHB_BUS_NUM 256
|
||||
|
||||
#define PHBS_PER_CALGARY 4
|
||||
|
||||
@@ -1056,8 +1056,6 @@ static int __init calgary_init_one(struct pci_dev *dev)
|
||||
struct iommu_table *tbl;
|
||||
int ret;
|
||||
|
||||
BUG_ON(dev->bus->number >= MAX_PHB_BUS_NUM);
|
||||
|
||||
bbar = busno_to_bbar(dev->bus->number);
|
||||
ret = calgary_setup_tar(dev, bbar);
|
||||
if (ret)
|
||||
|
@@ -498,15 +498,10 @@ void force_hpet_resume(void)
|
||||
* See erratum #27 (Misinterpreted MSI Requests May Result in
|
||||
* Corrupted LPC DMA Data) in AMD Publication #46837,
|
||||
* "SB700 Family Product Errata", Rev. 1.0, March 2010.
|
||||
*
|
||||
* Also force the read back of the CMP register in hpet_next_event()
|
||||
* to work around the problem that the CMP register write seems to be
|
||||
* delayed. See hpet_next_event() for details.
|
||||
*/
|
||||
static void force_disable_hpet_msi(struct pci_dev *unused)
|
||||
{
|
||||
hpet_msi_disable = 1;
|
||||
hpet_readback_cmp = 1;
|
||||
}
|
||||
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS,
|
||||
|
@@ -238,6 +238,15 @@ void __init setup_per_cpu_areas(void)
|
||||
#ifdef CONFIG_NUMA
|
||||
per_cpu(x86_cpu_to_node_map, cpu) =
|
||||
early_per_cpu_map(x86_cpu_to_node_map, cpu);
|
||||
/*
|
||||
* Ensure that the boot cpu numa_node is correct when the boot
|
||||
* cpu is on a node that doesn't have memory installed.
|
||||
* Also cpu_up() will call cpu_to_node() for APs when
|
||||
* MEMORY_HOTPLUG is defined, before per_cpu(numa_node) is set
|
||||
* up later with c_init aka intel_init/amd_init.
|
||||
* So set them all (boot cpu and all APs).
|
||||
*/
|
||||
set_cpu_numa_node(cpu, early_cpu_to_node(cpu));
|
||||
#endif
|
||||
#endif
|
||||
/*
|
||||
@@ -257,14 +266,6 @@ void __init setup_per_cpu_areas(void)
|
||||
early_per_cpu_ptr(x86_cpu_to_node_map) = NULL;
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_X86_64) && defined(CONFIG_NUMA)
|
||||
/*
|
||||
* make sure boot cpu numa_node is right, when boot cpu is on the
|
||||
* node that doesn't have mem installed
|
||||
*/
|
||||
set_cpu_numa_node(boot_cpu_id, early_cpu_to_node(boot_cpu_id));
|
||||
#endif
|
||||
|
||||
/* Setup node to cpumask map */
|
||||
setup_node_to_cpumask_map();
|
||||
|
||||
|
@@ -5,6 +5,7 @@
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
#include <asm/bios_ebda.h>
|
||||
#include <asm/paravirt.h>
|
||||
@@ -85,6 +86,7 @@ struct x86_cpuinit_ops x86_cpuinit __cpuinitdata = {
|
||||
};
|
||||
|
||||
static void default_nmi_init(void) { };
|
||||
static int default_i8042_detect(void) { return 1; };
|
||||
|
||||
struct x86_platform_ops x86_platform = {
|
||||
.calibrate_tsc = native_calibrate_tsc,
|
||||
@@ -92,5 +94,8 @@ struct x86_platform_ops x86_platform = {
|
||||
.set_wallclock = mach_set_rtc_mmss,
|
||||
.iommu_shutdown = iommu_shutdown_noop,
|
||||
.is_untracked_pat_range = is_ISA_range,
|
||||
.nmi_init = default_nmi_init
|
||||
.nmi_init = default_nmi_init,
|
||||
.i8042_detect = default_i8042_detect
|
||||
};
|
||||
|
||||
EXPORT_SYMBOL_GPL(x86_platform);
|
||||
|
Reference in New Issue
Block a user