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: oprofile: don't set counter width from cpuid on Core2 x86: fix init_memory_mapping() to handle small ranges
This commit is contained in:
commit
3024e4a997
|
@ -714,6 +714,8 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
|
||||||
pos = start_pfn << PAGE_SHIFT;
|
pos = start_pfn << PAGE_SHIFT;
|
||||||
end_pfn = ((pos + (PMD_SIZE - 1)) >> PMD_SHIFT)
|
end_pfn = ((pos + (PMD_SIZE - 1)) >> PMD_SHIFT)
|
||||||
<< (PMD_SHIFT - PAGE_SHIFT);
|
<< (PMD_SHIFT - PAGE_SHIFT);
|
||||||
|
if (end_pfn > (end >> PAGE_SHIFT))
|
||||||
|
end_pfn = end >> PAGE_SHIFT;
|
||||||
if (start_pfn < end_pfn) {
|
if (start_pfn < end_pfn) {
|
||||||
nr_range = save_mr(mr, nr_range, start_pfn, end_pfn, 0);
|
nr_range = save_mr(mr, nr_range, start_pfn, end_pfn, 0);
|
||||||
pos = end_pfn << PAGE_SHIFT;
|
pos = end_pfn << PAGE_SHIFT;
|
||||||
|
|
|
@ -78,8 +78,18 @@ static void ppro_setup_ctrs(struct op_msrs const * const msrs)
|
||||||
if (cpu_has_arch_perfmon) {
|
if (cpu_has_arch_perfmon) {
|
||||||
union cpuid10_eax eax;
|
union cpuid10_eax eax;
|
||||||
eax.full = cpuid_eax(0xa);
|
eax.full = cpuid_eax(0xa);
|
||||||
if (counter_width < eax.split.bit_width)
|
|
||||||
counter_width = eax.split.bit_width;
|
/*
|
||||||
|
* For Core2 (family 6, model 15), don't reset the
|
||||||
|
* counter width:
|
||||||
|
*/
|
||||||
|
if (!(eax.split.version_id == 0 &&
|
||||||
|
current_cpu_data.x86 == 6 &&
|
||||||
|
current_cpu_data.x86_model == 15)) {
|
||||||
|
|
||||||
|
if (counter_width < eax.split.bit_width)
|
||||||
|
counter_width = eax.split.bit_width;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* clear all counters */
|
/* clear all counters */
|
||||||
|
|
Loading…
Reference in New Issue