lkml.org 
[lkml]   [2003]   [Jul]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: 2.6.0-test2-osdl1
On 30 Jul 2003 12:07:27 -0300
Luiz Capitulino <lcapitulino@prefeitura.sp.gov.br> wrote:

> Stephen,
>
> Em Ter, 2003-07-29 às 20:07, Stephen Hemminger escreveu:
>
> > o Performance Counters (Mikael Pettersson)
>
> CC drivers/perfctr/x86.o
> drivers/perfctr/x86.c: In function `p4_write_control':
> drivers/perfctr/x86.c:806: request for member `mask' in something
> not a structure or union
> drivers/perfctr/x86.c: In function `finalise_backpatching':
> drivers/perfctr/x86.c:1139: incompatible types in assignment
> drivers/perfctr/x86.c:1140: warning: statement with no effect
> drivers/perfctr/x86.c: In function `perfctr_cpu_init':
> drivers/perfctr/x86.c:1680: incompatible types in assignment
> make[2]: ** [drivers/perfctr/x86.o] Error 1
> make[1]: ** [drivers/perfctr] Error 2
> make: ** [drivers] Error 2

I had to redo the cpu bit mask code for perfctr to make it work with
the patch to allow greater than 32 cpu's. This should work:

diff -Nru a/drivers/perfctr/x86.c b/drivers/perfctr/x86.c
--- a/drivers/perfctr/x86.c Wed Jul 30 15:52:07 2003
+++ b/drivers/perfctr/x86.c Wed Jul 30 15:52:07 2003
@@ -9,6 +9,7 @@
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/fs.h>
+#include <linux/cpumask.h>
#include <linux/perfctr.h>

#include <asm/msr.h>
@@ -797,6 +798,8 @@
}
#endif /* PERFCTR_INTERRUPT_SUPPORT */

+cpumask_t perfctr_cpus_forbidden_mask;
+
static void p4_write_control(const struct perfctr_cpu_state *state)
{
struct per_cpu_cache *cache;
@@ -1122,23 +1125,15 @@
* *
****************************************************************/

-static inline void set_perfctr_cpus_forbidden_mask(cpumask_t mask)
-{
-#if !defined(perfctr_cpus_forbidden_mask)
- perfctr_cpus_forbidden_mask = mask;
-#endif
-}
-
/* see comment above at redirect_call() */
static void __init finalise_backpatching(void)
{
struct per_cpu_cache *cache;
struct perfctr_cpu_state state;
- cpumask_t old_mask, new_mask;
+ cpumask_t old_mask;

old_mask = perfctr_cpus_forbidden_mask;
- cpus_empty(new_mask);
- set_perfctr_cpus_forbidden_mask(new_mask);
+ cpus_clear(perfctr_cpus_forbidden_mask);

cache = &per_cpu_cache[smp_processor_id()];
memset(cache, 0, sizeof *cache);
@@ -1151,7 +1146,7 @@
perfctr_cpu_resume(&state);
perfctr_cpu_suspend(&state);

- set_perfctr_cpus_forbidden_mask(old_mask);
+ perfctr_cpus_forbidden_mask = old_mask;

redirect_call_disable = 1;
}
@@ -1167,8 +1162,6 @@
}
#else

-cpumask_t perfctr_cpus_forbidden_mask;
-
static inline int __init p4_ht_finalise(cpumask_t forbidden)
{
int cpu;
@@ -1214,7 +1207,7 @@
}
if( nr_siblings < 2 )
return 0;
- cpus_empty(forbidden);
+ cpus_clear(forbidden);
smp_call_function(p4_ht_mask_setup_cpu, &forbidden, 1, 1);
p4_ht_mask_setup_cpu(&forbidden);
if( !any_online_cpu(forbidden))
diff -Nru a/include/asm-i386/perfctr.h b/include/asm-i386/perfctr.h
--- a/include/asm-i386/perfctr.h Wed Jul 30 15:52:07 2003
+++ b/include/asm-i386/perfctr.h Wed Jul 30 15:52:07 2003
@@ -164,14 +164,9 @@
static inline void perfctr_cpu_set_ihandler(perfctr_ihandler_t x) { }
#endif

-#if defined(CONFIG_SMP) && LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,15)
/* CPUs in `perfctr_cpus_forbidden_mask' must not use the
performance-monitoring counters. TSC use is unrestricted. */
extern cpumask_t perfctr_cpus_forbidden_mask;
-#else
-#define perfctr_cpus_forbidden_mask (0UL)
-#endif
-
#endif /* CONFIG_PERFCTR */

#if defined(CONFIG_KPERFCTR) && PERFCTR_INTERRUPT_SUPPORT
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-03-22 13:47    [W:0.134 / U:0.112 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site