Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eb90d81d authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'x86-fixes-for-linus' of...

Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip

* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip:
  x86: prevent PGE flush from interruption/preemption
  x86: use explicit copy in vdso_gettimeofday()
  namespacecheck: automated fixes
  x86/xen: fix arbitrary_virt_to_machine()
  x86: don't read maxlvt before checking if APIC is mapped
  x86: disable TSC for sched_clock() when calibration failed
  x86: distangle user disabled TSC from unstable
  x86: fix setup of cyc2ns in tsc_64.c
parents d3c5f8b9 b1979a5f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -534,7 +534,7 @@ int setup_profiling_timer(unsigned int multiplier)
 */
void clear_local_APIC(void)
{
	int maxlvt = lapic_get_maxlvt();
	int maxlvt;
	u32 v;

	/* APIC hasn't been mapped yet */
+2 −2
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ static cycle_t kvm_clock_read(void);
 * have elapsed since the hypervisor wrote the data. So we try to account for
 * that with system time
 */
unsigned long kvm_get_wallclock(void)
static unsigned long kvm_get_wallclock(void)
{
	u32 wc_sec, wc_nsec;
	u64 delta;
@@ -86,7 +86,7 @@ unsigned long kvm_get_wallclock(void)
	return ts.tv_sec + 1;
}

int kvm_set_wallclock(unsigned long now)
static int kvm_set_wallclock(unsigned long now)
{
	return 0;
}
+15 −10
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@

#include "mach_timer.h"

static int tsc_enabled;
static int tsc_disabled;

/*
 * On some systems the TSC frequency does not
@@ -29,7 +29,7 @@ static int __init tsc_setup(char *str)
{
	printk(KERN_WARNING "notsc: Kernel compiled with CONFIG_X86_TSC, "
	       "cannot disable TSC completely.\n");
	mark_tsc_unstable("user disabled TSC");
	tsc_disabled = 1;
	return 1;
}
#else
@@ -120,7 +120,7 @@ unsigned long long native_sched_clock(void)
	 *   very important for it to be as fast as the platform
	 *   can achive it. )
	 */
	if (unlikely(!tsc_enabled && !tsc_unstable))
	if (unlikely(tsc_disabled))
		/* No locking but a rare wrong value is not a big deal: */
		return (jiffies_64 - INITIAL_JIFFIES) * (1000000000 / HZ);

@@ -322,7 +322,6 @@ void mark_tsc_unstable(char *reason)
{
	if (!tsc_unstable) {
		tsc_unstable = 1;
		tsc_enabled = 0;
		printk("Marking TSC unstable due to: %s.\n", reason);
		/* Can be called before registration */
		if (clocksource_tsc.mult)
@@ -403,14 +402,22 @@ void __init tsc_init(void)
{
	int cpu;

	if (!cpu_has_tsc)
	if (!cpu_has_tsc || tsc_disabled) {
		/* Disable the TSC in case of !cpu_has_tsc */
		tsc_disabled = 1;
		return;
	}

	cpu_khz = calculate_cpu_khz();
	tsc_khz = cpu_khz;

	if (!cpu_khz) {
		mark_tsc_unstable("could not calculate TSC khz");
		/*
		 * We need to disable the TSC completely in this case
		 * to prevent sched_clock() from using it.
		 */
		tsc_disabled = 1;
		return;
	}

@@ -441,8 +448,6 @@ void __init tsc_init(void)
	if (check_tsc_unstable()) {
		clocksource_tsc.rating = 0;
		clocksource_tsc.flags &= ~CLOCK_SOURCE_IS_CONTINUOUS;
	} else
		tsc_enabled = 1;

	}
	clocksource_register(&clocksource_tsc);
}
+3 −2
Original line number Diff line number Diff line
@@ -227,14 +227,14 @@ void __init tsc_calibrate(void)
	/* hpet or pmtimer available ? */
	if (!hpet && !pm1 && !pm2) {
		printk(KERN_INFO "TSC calibrated against PIT\n");
		return;
		goto out;
	}

	/* Check, whether the sampling was disturbed by an SMI */
	if (tsc1 == ULONG_MAX || tsc2 == ULONG_MAX) {
		printk(KERN_WARNING "TSC calibration disturbed by SMI, "
		       "using PIT calibration result\n");
		return;
		goto out;
	}

	tsc2 = (tsc2 - tsc1) * 1000000L;
@@ -255,6 +255,7 @@ void __init tsc_calibrate(void)

	tsc_khz = tsc2 / tsc1;

out:
	for_each_possible_cpu(cpu)
		set_cyc2ns_scale(tsc_khz, cpu);
}
+1 −1
Original line number Diff line number Diff line
@@ -1996,7 +1996,7 @@ static struct shrinker mmu_shrinker = {
	.seeks = DEFAULT_SEEKS * 10,
};

void mmu_destroy_caches(void)
static void mmu_destroy_caches(void)
{
	if (pte_chain_cache)
		kmem_cache_destroy(pte_chain_cache);
Loading