summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorStephen Rothwell <sfr@canb.auug.org.au>2011-03-31 11:46:00 +1100
committerStephen Rothwell <sfr@canb.auug.org.au>2011-03-31 11:46:00 +1100
commit9f229056b7691091e15995d67c777ead72077720 (patch)
treefe2736d5b547da8c91e1f838c4db68370b589ccb /arch
parentbdd361147338283360a96e09939868f65c138904 (diff)
parent855f905a48cf6798c7c65ab5a04f2ac172c168d9 (diff)
Merge remote-tracking branch 'oprofile/for-next'
Diffstat (limited to 'arch')
-rw-r--r--arch/alpha/oprofile/common.c5
-rw-r--r--arch/avr32/oprofile/op_model_avr32.c5
-rw-r--r--arch/blackfin/oprofile/bfin_oprofile.c4
-rw-r--r--arch/ia64/oprofile/init.c2
-rw-r--r--arch/m32r/oprofile/init.c4
-rw-r--r--arch/microblaze/oprofile/microblaze_oprofile.c4
-rw-r--r--arch/mips/oprofile/common.c2
-rw-r--r--arch/mn10300/oprofile/op_model_null.c5
-rw-r--r--arch/parisc/oprofile/init.c4
-rw-r--r--arch/powerpc/oprofile/common.c4
-rw-r--r--arch/s390/oprofile/init.c2
-rw-r--r--arch/sparc/oprofile/init.c4
-rw-r--r--arch/x86/oprofile/init.c2
-rw-r--r--arch/x86/oprofile/nmi_int.c5
-rw-r--r--arch/x86/oprofile/op_counter.h1
15 files changed, 19 insertions, 34 deletions
diff --git a/arch/alpha/oprofile/common.c b/arch/alpha/oprofile/common.c
index bd8ac533a504..49b7246cbbc1 100644
--- a/arch/alpha/oprofile/common.c
+++ b/arch/alpha/oprofile/common.c
@@ -183,7 +183,4 @@ oprofile_arch_init(struct oprofile_operations *ops)
}
-void
-oprofile_arch_exit(void)
-{
-}
+void __exit oprofile_arch_exit(void) { }
diff --git a/arch/avr32/oprofile/op_model_avr32.c b/arch/avr32/oprofile/op_model_avr32.c
index a3e9b3c4845a..93feba449833 100644
--- a/arch/avr32/oprofile/op_model_avr32.c
+++ b/arch/avr32/oprofile/op_model_avr32.c
@@ -232,7 +232,4 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
return 0;
}
-void oprofile_arch_exit(void)
-{
-
-}
+void __exit oprofile_arch_exit(void) { }
diff --git a/arch/blackfin/oprofile/bfin_oprofile.c b/arch/blackfin/oprofile/bfin_oprofile.c
index c3b9713b23f8..7dcac13f8d8b 100644
--- a/arch/blackfin/oprofile/bfin_oprofile.c
+++ b/arch/blackfin/oprofile/bfin_oprofile.c
@@ -13,6 +13,4 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
return -1;
}
-void oprofile_arch_exit(void)
-{
-}
+void __exit oprofile_arch_exit(void) { }
diff --git a/arch/ia64/oprofile/init.c b/arch/ia64/oprofile/init.c
index 31b545c35460..a28feacff5cf 100644
--- a/arch/ia64/oprofile/init.c
+++ b/arch/ia64/oprofile/init.c
@@ -30,7 +30,7 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
}
-void oprofile_arch_exit(void)
+void __exit oprofile_arch_exit(void)
{
#ifdef CONFIG_PERFMON
perfmon_exit();
diff --git a/arch/m32r/oprofile/init.c b/arch/m32r/oprofile/init.c
index fa56860f4258..a7e063e7c839 100644
--- a/arch/m32r/oprofile/init.c
+++ b/arch/m32r/oprofile/init.c
@@ -17,6 +17,4 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
return -ENODEV;
}
-void oprofile_arch_exit(void)
-{
-}
+void __exit oprofile_arch_exit(void) { }
diff --git a/arch/microblaze/oprofile/microblaze_oprofile.c b/arch/microblaze/oprofile/microblaze_oprofile.c
index def17e59888e..23c108dd4ce6 100644
--- a/arch/microblaze/oprofile/microblaze_oprofile.c
+++ b/arch/microblaze/oprofile/microblaze_oprofile.c
@@ -17,6 +17,4 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
return -1;
}
-void oprofile_arch_exit(void)
-{
-}
+void __exit oprofile_arch_exit(void) { }
diff --git a/arch/mips/oprofile/common.c b/arch/mips/oprofile/common.c
index f9eb1aba6345..fff011a84924 100644
--- a/arch/mips/oprofile/common.c
+++ b/arch/mips/oprofile/common.c
@@ -122,7 +122,7 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
return 0;
}
-void oprofile_arch_exit(void)
+void __exit oprofile_arch_exit(void)
{
if (model)
model->exit();
diff --git a/arch/mn10300/oprofile/op_model_null.c b/arch/mn10300/oprofile/op_model_null.c
index cd4ab374bc4f..d308d1318698 100644
--- a/arch/mn10300/oprofile/op_model_null.c
+++ b/arch/mn10300/oprofile/op_model_null.c
@@ -16,7 +16,4 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
return -ENODEV;
}
-void oprofile_arch_exit(void)
-{
-}
-
+void __exit oprofile_arch_exit(void) { }
diff --git a/arch/parisc/oprofile/init.c b/arch/parisc/oprofile/init.c
index 026cba2af07a..86cd3a5426fb 100644
--- a/arch/parisc/oprofile/init.c
+++ b/arch/parisc/oprofile/init.c
@@ -18,6 +18,4 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
}
-void oprofile_arch_exit(void)
-{
-}
+void __exit oprofile_arch_exit(void) { }
diff --git a/arch/powerpc/oprofile/common.c b/arch/powerpc/oprofile/common.c
index d65e68f3cb25..c0909513a400 100644
--- a/arch/powerpc/oprofile/common.c
+++ b/arch/powerpc/oprofile/common.c
@@ -249,6 +249,4 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
return 0;
}
-void oprofile_arch_exit(void)
-{
-}
+void __exit oprofile_arch_exit(void) { }
diff --git a/arch/s390/oprofile/init.c b/arch/s390/oprofile/init.c
index c63d7e58352b..614e607ac247 100644
--- a/arch/s390/oprofile/init.c
+++ b/arch/s390/oprofile/init.c
@@ -188,7 +188,7 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
#endif
}
-void oprofile_arch_exit(void)
+void __exit oprofile_arch_exit(void)
{
#ifdef CONFIG_64BIT
oprofile_hwsampler_exit();
diff --git a/arch/sparc/oprofile/init.c b/arch/sparc/oprofile/init.c
index f9024bccff16..315c932f1259 100644
--- a/arch/sparc/oprofile/init.c
+++ b/arch/sparc/oprofile/init.c
@@ -82,6 +82,4 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
return ret;
}
-void oprofile_arch_exit(void)
-{
-}
+void __exit oprofile_arch_exit(void) { }
diff --git a/arch/x86/oprofile/init.c b/arch/x86/oprofile/init.c
index cdfe4c54deca..085d952ffa22 100644
--- a/arch/x86/oprofile/init.c
+++ b/arch/x86/oprofile/init.c
@@ -41,7 +41,7 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
}
-void oprofile_arch_exit(void)
+void __exit oprofile_arch_exit(void)
{
#ifdef CONFIG_X86_LOCAL_APIC
op_nmi_exit();
diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c
index 8dace181c88e..cf9750004a08 100644
--- a/arch/x86/oprofile/nmi_int.c
+++ b/arch/x86/oprofile/nmi_int.c
@@ -49,6 +49,10 @@ u64 op_x86_get_ctrl(struct op_x86_model_spec const *model,
val |= counter_config->user ? ARCH_PERFMON_EVENTSEL_USR : 0;
val |= counter_config->kernel ? ARCH_PERFMON_EVENTSEL_OS : 0;
val |= (counter_config->unit_mask & 0xFF) << 8;
+ counter_config->extra &= (ARCH_PERFMON_EVENTSEL_INV |
+ ARCH_PERFMON_EVENTSEL_EDGE |
+ ARCH_PERFMON_EVENTSEL_CMASK);
+ val |= counter_config->extra;
event &= model->event_mask ? model->event_mask : 0xFF;
val |= event & 0xFF;
val |= (event & 0x0F00) << 24;
@@ -440,6 +444,7 @@ static int nmi_create_files(struct super_block *sb, struct dentry *root)
oprofilefs_create_ulong(sb, dir, "unit_mask", &counter_config[i].unit_mask);
oprofilefs_create_ulong(sb, dir, "kernel", &counter_config[i].kernel);
oprofilefs_create_ulong(sb, dir, "user", &counter_config[i].user);
+ oprofilefs_create_ulong(sb, dir, "extra", &counter_config[i].extra);
}
return 0;
diff --git a/arch/x86/oprofile/op_counter.h b/arch/x86/oprofile/op_counter.h
index e28398df0df2..0b7b7b179cbe 100644
--- a/arch/x86/oprofile/op_counter.h
+++ b/arch/x86/oprofile/op_counter.h
@@ -22,6 +22,7 @@ struct op_counter_config {
unsigned long kernel;
unsigned long user;
unsigned long unit_mask;
+ unsigned long extra;
};
extern struct op_counter_config counter_config[];