mirror of
https://github.com/torvalds/linux.git
synced 2024-11-05 11:32:04 +00:00
Merge branch 'oprofile-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'oprofile-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: oprofile: introduce module_param oprofile.cpu_type oprofile: add support for Core i7 and Atom oprofile: remove undocumented oprofile.p4force option oprofile: re-add force_arch_perfmon option
This commit is contained in:
commit
57eee9ae7b
@ -1665,6 +1665,14 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||||||
oprofile.timer= [HW]
|
oprofile.timer= [HW]
|
||||||
Use timer interrupt instead of performance counters
|
Use timer interrupt instead of performance counters
|
||||||
|
|
||||||
|
oprofile.cpu_type= Force an oprofile cpu type
|
||||||
|
This might be useful if you have an older oprofile
|
||||||
|
userland or if you want common events.
|
||||||
|
Format: { archperfmon }
|
||||||
|
archperfmon: [X86] Force use of architectural
|
||||||
|
perfmon on Intel CPUs instead of the
|
||||||
|
CPU specific event set.
|
||||||
|
|
||||||
osst= [HW,SCSI] SCSI Tape Driver
|
osst= [HW,SCSI] SCSI Tape Driver
|
||||||
Format: <buffer_size>,<write_threshold>
|
Format: <buffer_size>,<write_threshold>
|
||||||
See also Documentation/scsi/st.txt.
|
See also Documentation/scsi/st.txt.
|
||||||
|
@ -356,14 +356,11 @@ static void exit_sysfs(void)
|
|||||||
#define exit_sysfs() do { } while (0)
|
#define exit_sysfs() do { } while (0)
|
||||||
#endif /* CONFIG_PM */
|
#endif /* CONFIG_PM */
|
||||||
|
|
||||||
static int p4force;
|
|
||||||
module_param(p4force, int, 0);
|
|
||||||
|
|
||||||
static int __init p4_init(char **cpu_type)
|
static int __init p4_init(char **cpu_type)
|
||||||
{
|
{
|
||||||
__u8 cpu_model = boot_cpu_data.x86_model;
|
__u8 cpu_model = boot_cpu_data.x86_model;
|
||||||
|
|
||||||
if (!p4force && (cpu_model > 6 || cpu_model == 5))
|
if (cpu_model > 6 || cpu_model == 5)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
#ifndef CONFIG_SMP
|
#ifndef CONFIG_SMP
|
||||||
@ -389,10 +386,25 @@ static int __init p4_init(char **cpu_type)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int force_arch_perfmon;
|
||||||
|
static int force_cpu_type(const char *str, struct kernel_param *kp)
|
||||||
|
{
|
||||||
|
if (!strcmp(str, "archperfmon")) {
|
||||||
|
force_arch_perfmon = 1;
|
||||||
|
printk(KERN_INFO "oprofile: forcing architectural perfmon\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
module_param_call(cpu_type, force_cpu_type, NULL, NULL, 0);
|
||||||
|
|
||||||
static int __init ppro_init(char **cpu_type)
|
static int __init ppro_init(char **cpu_type)
|
||||||
{
|
{
|
||||||
__u8 cpu_model = boot_cpu_data.x86_model;
|
__u8 cpu_model = boot_cpu_data.x86_model;
|
||||||
|
|
||||||
|
if (force_arch_perfmon && cpu_has_arch_perfmon)
|
||||||
|
return 0;
|
||||||
|
|
||||||
switch (cpu_model) {
|
switch (cpu_model) {
|
||||||
case 0 ... 2:
|
case 0 ... 2:
|
||||||
*cpu_type = "i386/ppro";
|
*cpu_type = "i386/ppro";
|
||||||
@ -414,6 +426,13 @@ static int __init ppro_init(char **cpu_type)
|
|||||||
case 15: case 23:
|
case 15: case 23:
|
||||||
*cpu_type = "i386/core_2";
|
*cpu_type = "i386/core_2";
|
||||||
break;
|
break;
|
||||||
|
case 26:
|
||||||
|
arch_perfmon_setup_counters();
|
||||||
|
*cpu_type = "i386/core_i7";
|
||||||
|
break;
|
||||||
|
case 28:
|
||||||
|
*cpu_type = "i386/atom";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
/* Unknown */
|
/* Unknown */
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user