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

Commit b1ae8d3a 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/tip/linux-2.6-tip

* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86, geode: add a VSA2 ID for General Software
  x86: use BOOTMEM_EXCLUSIVE on 32-bit
  x86, 32-bit: fix boot failure on TSC-less processors
  x86: fix NULL pointer deref in __switch_to
  x86: set PAE PHYSICAL_MASK_SHIFT to 44 bits.
parents 55017923 ffe6e1da
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -166,6 +166,8 @@ int geode_has_vsa2(void)
	static int has_vsa2 = -1;

	if (has_vsa2 == -1) {
		u16 val;

		/*
		 * The VSA has virtual registers that we can query for a
		 * signature.
@@ -173,7 +175,8 @@ int geode_has_vsa2(void)
		outw(VSA_VR_UNLOCK, VSA_VRC_INDEX);
		outw(VSA_VR_SIGNATURE, VSA_VRC_INDEX);

		has_vsa2 = (inw(VSA_VRC_DATA) == VSA_SIG);
		val = inw(VSA_VRC_DATA);
		has_vsa2 = (val == AMD_VSA_SIG || val == GSW_VSA_SIG);
	}

	return has_vsa2;
+1 −0
Original line number Diff line number Diff line
@@ -333,6 +333,7 @@ void flush_thread(void)
	/*
	 * Forget coprocessor state..
	 */
	tsk->fpu_counter = 0;
	clear_fpu(tsk);
	clear_used_math();
}
+1 −0
Original line number Diff line number Diff line
@@ -294,6 +294,7 @@ void flush_thread(void)
	/*
	 * Forget coprocessor state..
	 */
	tsk->fpu_counter = 0;
	clear_fpu(tsk);
	clear_used_math();
}
+8 −2
Original line number Diff line number Diff line
@@ -532,10 +532,16 @@ static void __init reserve_crashkernel(void)
					(unsigned long)(crash_size >> 20),
					(unsigned long)(crash_base >> 20),
					(unsigned long)(total_mem >> 20));

			if (reserve_bootmem(crash_base, crash_size,
					BOOTMEM_EXCLUSIVE) < 0) {
				printk(KERN_INFO "crashkernel reservation "
					"failed - memory is in use\n");
				return;
			}

			crashk_res.start = crash_base;
			crashk_res.end   = crash_base + crash_size - 1;
			reserve_bootmem(crash_base, crash_size,
					BOOTMEM_DEFAULT);
		} else
			printk(KERN_INFO "crashkernel reservation failed - "
					"you have to specify a base address\n");
+8 −10
Original line number Diff line number Diff line
@@ -14,7 +14,10 @@

#include "mach_timer.h"

static int tsc_disabled;
/* native_sched_clock() is called before tsc_init(), so
   we must start with the TSC soft disabled to prevent
   erroneous rdtsc usage on !cpu_has_tsc processors */
static int tsc_disabled = -1;

/*
 * On some systems the TSC frequency does not
@@ -402,25 +405,20 @@ void __init tsc_init(void)
{
	int cpu;

	if (!cpu_has_tsc || tsc_disabled) {
		/* Disable the TSC in case of !cpu_has_tsc */
		tsc_disabled = 1;
	if (!cpu_has_tsc || tsc_disabled > 0)
		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;
	}

	/* now allow native_sched_clock() to use rdtsc */
	tsc_disabled = 0;

	printk("Detected %lu.%03lu MHz processor.\n",
				(unsigned long)cpu_khz / 1000,
				(unsigned long)cpu_khz % 1000);
Loading